>

.jks 잔뜩 있어요  디렉토리의 파일. 날짜 및 만료 날짜부터 유효한 별칭 이름을 추출하고 싶습니다. 지금 나는 다음을 가지고있다 :

for f in *; do if [ -f $f ]; then echo "" |keytool -list -v -keystore $f | grep -e "Alias name:" -e "Valid from:"; fi done

다음과 같은 것을 출력 할 것입니다

Alias name: somehostname.com
Valid from: Wed Mar 01 00:00:00 GMT 2019 until: Wed Mar 01 00:00:00 GMT 2022
Valid from: Wed Mar 01 00:00:00 GMT 2019 until: Wed Mar 01 00:00:00 GMT 2022
.
.
.
Valid from: Wed Mar 01 00:00:00 GMT 2019 until: Wed Mar 01 00:00:00 GMT 2022

각 별명에 대해 하나 이상의 인증서가 있지만 최대 n  인증서.

위의 출력 형식은 다음과 같습니다.

somehostname.com \t Wed Mar 01 00:00:00 GMT 2019 \t Wed Mar 01 00:00:00 GMT 2022
{empty}          \t Wed Mar 01 00:00:00 GMT 2019 \t Wed Mar 01 00:00:00 GMT 2022
.
.
.
{empty}          \t Wed Mar 01 00:00:00 GMT 2019 \t Wed Mar 01 00:00:00 GMT 2022

{empty}  정렬을위한 공백을 의미합니다. 와이즈 비즈   \t 를 의미  분리 기호.

이것은하나에 대한 최종 출력입니다. TAB  파일.
나는 모든 .jks 에 대해 이것을하고 싶습니다  디렉토리의 파일.

이렇게하려면 기존 명령 줄 스크립트를 awk로 수정하려면 어떻게해야합니까?

.jks

  • 답변 # 1

    GNU awk 가있는 경우 {empty} 대신 공백을 사용하여 채 웁니다. 다음과 같이 할 수 있습니다 :

    awk 'BEGIN{RS="Alias name: *";FS="Valid from: *";}FNR>1{gsub(/until:/,"\t");gsub(/\n/,"");print $1 "\t" $2; i=3; while($i){for(j=0;j<length($1);j++)printf " "; print "\t" $i; i++;}}' file
    
    
    file 와 함께 :

    Alias name: somehostname.com
    Valid from: Wed Mar 01 00:00:00 GMT 2019 until: Wed Mar 01 00:00:00 GMT 2022
    Valid from: Wed Mar 01 00:00:00 GMT 2019 until: Wed Mar 01 00:00:00 GMT 2022
    Valid from: Tue Feb 01 00:00:00 GMT 2019 until: Sat Jun 01 23:00:00 GMT 2062
    Alias name: another.com
    Valid from: Wed Mar 01 00:00:00 GMT 2019 until: Wed Mar 01 00:00:00 GMT 2022
    Alias name: yetanother.com
    Valid from: Wed Mar 01 00:00:00 GMT 2019 until: Wed Mar 01 00:00:00 GMT 2022
    Valid from: Wed Mar 01 00:00:00 GMT 2019 until: Wed Mar 01 00:00:00 GMT 2022
    
    

    이 출력을 생성합니다 :

    somehostname.com    Wed Mar 01 00:00:00 GMT 2019     Wed Mar 01 00:00:00 GMT 2022
                        Wed Mar 01 00:00:00 GMT 2019     Wed Mar 01 00:00:00 GMT 2022
                        Tue Feb 01 00:00:00 GMT 2019     Sat Jun 01 23:00:00 GMT 2062
    another.com Wed Mar 01 00:00:00 GMT 2019     Wed Mar 01 00:00:00 GMT 2022
    yetanother.com  Wed Mar 01 00:00:00 GMT 2019     Wed Mar 01 00:00:00 GMT 2022
                    Wed Mar 01 00:00:00 GMT 2019     Wed Mar 01 00:00:00 GMT 2022
    
    

  • 답변 # 2

    이것은 예쁘지 않지만 간단합니다.

    cat sam.awk
    /Alias name:/ {
      count=0
      l=length($3);
      printf "%s ", $3
    }
    /Valid from:/ {
      count++;
      gsub(/Valid from:/, "\\t");
      gsub(/until:/, "\\t");
      space=0
      if(count!=1) {
        space=l-4
        printf "{empty}"
      };
      printf " %*s %s %s %s %s %s %s %s %s %s %s %s %s\n",space,$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15
    }
    
    

    재생 할 jsk 파일이 없기 때문에 실제 출력을 실험의 입력으로 가져 왔습니다 (여러 파일의 출력을 에뮬레이트하기 위해 하나의 항목을 복제하고 호스트 이름을 변경했습니다).

    cat sam
    Alias name: somehostname.com
    Valid from: Wed Mar 01 00:00:00 GMT 2019 until: Wed Mar 01 00:00:00 GMT 2022
    Valid from: Wed Mar 01 00:00:00 GMT 2019 until: Wed Mar 01 00:00:00 GMT 2022
    Valid from: Wed Mar 01 00:00:00 GMT 2019 until: Wed Mar 01 00:00:00 GMT 2022 
    Alias name: hostname.com
    Valid from: Wed Mar 01 00:00:00 GMT 2019 until: Wed Mar 01 00:00:00 GMT 2022
    Valid from: Wed Mar 01 00:00:00 GMT 2019 until: Wed Mar 01 00:00:00 GMT 2022
    Valid from: Wed Mar 01 00:00:00 GMT 2019 until: Wed Mar 01 00:00:00 GMT 2022
    
    
    awk -f sam.awk sam 처럼 호출  다음을 제공합니다.

    awk -f sam.awk sam
    somehostname.com  \t Wed Mar 01 00:00:00 GMT 2019 \t Wed Mar 01 00:00:00 GMT
    {empty}           \t Wed Mar 01 00:00:00 GMT 2019 \t Wed Mar 01 00:00:00 GMT
    {empty}           \t Wed Mar 01 00:00:00 GMT 2019 \t Wed Mar 01 00:00:00 GMT
    hostname.com  \t Wed Mar 01 00:00:00 GMT 2019 \t Wed Mar 01 00:00:00 GMT
    {empty}       \t Wed Mar 01 00:00:00 GMT 2019 \t Wed Mar 01 00:00:00 GMT
    {empty}       \t Wed Mar 01 00:00:00 GMT 2019 \t Wed Mar 01 00:00:00 GMT
    
    

관련 자료

  • 이전 파이썬에서 티를 사용하여 반복기의 사본을 느리게 생성 할 수 있습니까?
  • 다음 python - 팬더에 대한 Numpy 요구 사항이 충족되지 않음