awkを使用して2つの列を順番に印刷する

awkを使用して2つの列を順番に印刷する

私は単に列と次のデータを印刷したいと$4思います$NF

       000   0     00    NUL '\0' (null character)   100   64    40    @
       001   1     01    SOH (start of heading)      101   65    41    A
       002   2     02    STX (start of text)         102   66    42    B
       003   3     03    ETX (end of text)           103   67    43    C
       004   4     04    EOT (end of transmission)   104   68    44    D
       005   5     05    ENQ (enquiry)               105   69    45    E
       006   6     06    ACK (acknowledge)           106   70    46    F
       007   7     07    BEL '\a' (bell)             107   71    47    G
       010   8     08    BS  '\b' (backspace)        110   72    48    H

これにより、次のような結果が得られます。

NUL
SOH
STX
ETX
EOT
ENQ
ACK
BEL
BS
@
A
B
C
D
E
F
G
H

最初のジョブが完了するのを待ってから、awk次の列の印刷を実行します。

私は試した:

awk '{print $4} {print $NF}' 

しかし、これは明らかにそれらを1つずつ印刷して、すべて一緒に混ぜることです。

よりよく理解し、いたずらするために努力していますawk。ご了承ください。

ベストアンサー1

AFAIK、この値を保存してブロック$NFとして印刷する必要がありますEND

awk '{a[NR] = $NF; print $4} END{for(i=1;i<=NR;i++) print a[i]}' file

または、ファイルに対して2回のパスを実行します。

awk 'NR==FNR {print $4; next} {print $NF}' file file

おすすめ記事