在awk中选择行和元素

Tim*_*Tim 66 awk

我在awk中了解到,2美元是第2列.如何在第i行和第j列指定第i行和元素?

Pau*_*ce. 146

要打印第二行:

awk 'FNR == 2 {print}'
Run Code Online (Sandbox Code Playgroud)

要打印第二个字段:

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

要打印第五行的第三个字段:

awk 'FNR == 5 {print $3}'
Run Code Online (Sandbox Code Playgroud)

这是一个带有标题行和(冗余)字段描述的示例:

awk 'BEGIN {print "Name\t\tAge"}  FNR == 5 {print "Name: "$3"\tAge: "$2}'
Run Code Online (Sandbox Code Playgroud)

顺便说一句,有更好的方法来对齐列而不是"\ t\t".

使用exit如你打印所需的记录,如果没有理由来处理整个文件尽快停止:

awk 'FNR == 2 {print; exit}'
Run Code Online (Sandbox Code Playgroud)


Hai*_* Vu 26

要使用特定字符串打印列,请使用//搜索模式.例如,如果要查找包含abc的第二列:

awk '$2 ~ /abc/'
Run Code Online (Sandbox Code Playgroud)

...如果您只想打印特定列:

awk '$2 ~ /abc/ { print $3 }'
Run Code Online (Sandbox Code Playgroud)

......以及特定的行号:

awk '$2 ~ /abc/ && FNR == 5 { print $3 }'
Run Code Online (Sandbox Code Playgroud)


gle*_*man 22

要扩展Dennis的答案,请使用awk's -v选项传递ij值:

# print the j'th field of the i'th line
awk -v i=5 -v j=3 'FNR == i {print $j}'
Run Code Online (Sandbox Code Playgroud)