使用 awk 依次打印两列

Mat*_*hew 2 awk

我试图简单地打印列,$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
Run Code Online (Sandbox Code Playgroud)

这样我就得到:

NUL
SOH
STX
ETX
EOT
ENQ
ACK
BEL
BS
@
A
B
C
D
E
F
G
H
Run Code Online (Sandbox Code Playgroud)

其中awk等待第一个操作完成然后执行下一列的打印输出。

我试过:

awk '{print $4} {print $NF}' 
Run Code Online (Sandbox Code Playgroud)

但这显然只是一个接一个地打印它们并将它们全部混合在一起。

我正在努力更好地理解awk并搞乱,请耐心等待。

ste*_*ver 6

AFAIK,您需要存储这些$NF值并将它们打印在一个END块中

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

或对文件进行两次遍历

awk 'NR==FNR {print $4; next} {print $NF}' file file
Run Code Online (Sandbox Code Playgroud)