代码之家  ›  专栏  ›  技术社区  ›  Fang

awk和printf插入额外换行符

  •  0
  • Fang  · 技术社区  · 4 年前

    V   220504203222Z       553A21806C0B711ED9E112E0B6680BED    unknown /C=DE/ST=BY/L=FU/O=a.com/OU=msc-dev/CN=ovpn-server-2020/emailAddress=m@icloud.com
    R   220925164608Z 211103011032Z E5D625C06F3D6DA4D3A92C092E8D12A0    unknown /C=DE/ST=BY/L=FU/O=a.com/OU=msc-dev/CN=grom/emailAddress=m2@icloud.com
    V   220925165555Z       185B52B7D6ABFF011FB0D7F826DE8851    unknown /C=DE/ST=BY/L=FU/O=a.com/OU=msc-dev/CN=bind9/emailAddress=martinschmid82@icloud.com
    V   220925171609Z       8764585492AE0097F76DFD7C9E2E75C7    unknown /C=DE/ST=BY/L=FU/O=a/OU=msc-dev/CN=bind-9/emailAddress=martinschmid82@icloud.com
    V   220925171854Z       5B7D28350F750F5745553E0647B79F63    unknown /C=DE/ST=BY/L=FU/O=a.com/OU=msc-dev/CN=qnap/emailAddress=m@icloud.com
    V   220929131353Z       99E85C7B92BFF646480854B282288E2A    unknown /C=DE/ST=BY/L=FU/O=a.com/OU=msc-dev/CN=ftp/emailAddress=m@icloud.com
    V   221012163300Z       39403EA3995349FF8FEC487BD59A1F98    unknown /C=DE/ST=BY/L=FU/O=akaritech.com/OU=msc-dev/CN=masc-mbp/emailAddress=martinschmid82@icloud.com
    V   221012163553Z       80668723276AB0B93CF6765F5EA56837    unknown /C=DE/ST=BY/L=FU/O=akaritech.com/OU=msc-dev/CN=masc-ipad/emailAddress=m@icloud.com
    V   221016205831Z       7ABD06B289E35D084D19EA170B8F2EC0    unknown /C=DE/ST=BY/L=FU/O=a.com/OU=msc-dev/CN=monitoring.brave-vesperia.com/emailAddress=m@icloud.com
    

    我想要的是第一、第二和第五列,在同一行上用空格隔开。我正在使用awk:

    #!/bin/bash
    
    index="/opt/easy-rsa/easyrsa3/pki/index.txt"
    
    for line in $(awk '{printf "%c %i %s\n", $1, $2, $5} ' ${index}); do
       if ! [[ ${line} =~ ^R.* ]]; then 
          printf "%s\n" $line ; 
       fi 
    done
    

    V
    220504203222
    /C=DE/ST=BY/L=FU/O=a.com/OU=msc-dev/CN=ovpn-server-2020/emailAddress=m@icloud.com
    220925164608
    unknown
    V
    220925165555
    /C=DE/ST=BY/L=FU/O=a.com/OU=msc-dev/CN=bind9/emailAddress=m@icloud.com
    V
    220925171609
    /C=DE/ST=BY/L=FU/O=a.com/OU=msc-dev/CN=bind-9/emailAddress=m@icloud.com
    V
    220925171854
    /C=DE/ST=BY/L=FU/O=a.com/OU=msc-dev/CN=qnap/emailAddress=m@icloud.com
    V
    220929131353
    /C=DE/ST=BY/L=FU/O=a.com/OU=msc-dev/CN=ftp/emailAddress=m@icloud.com
    V
    221012163300
    /C=DE/ST=BY/L=FU/O=a.com/OU=msc-dev/CN=masc-mbp/emailAddress=m@icloud.com
    V
    221012163553
    /C=DE/ST=BY/L=FU/O=a.com/OU=msc-dev/CN=masc-ipad/emailAddress=m@icloud.com
    V
    221016205831
    /C=DE/ST=BY/L=FU/O=a.com/OU=msc-dev/CN=monitoring.brave-vesperia.com/emailAddress=m@icloud.com
    

    我不明白额外的换行符是从哪里来的。

    1 回复  |  直到 4 年前
        1
  •  1
  •   Barmar    4 年前

    正在添加空格,因为 for line in $(awk ...) 拆分的输出 awk

    您可以通过设置 IFS awk while read line 环但是,把整个事情都放在电脑里就简单多了 .

    awk '$1 != "R" {printf "%c %i %s\n", $1, $2, $5} ' "${index}"
    
    推荐文章