使用awk从文本文件中提取值

使用awk从文本文件中提取值,awk,Awk,我想根据column2的值从文本文件中提取column1。只有当column2大于20时,我才需要打印column1。我还需要打印带有输出的文件名。我怎样才能用awk做到这一点 file1.txt alias 23 samson 10 george 24 file2.txt andrew 12 susan 16 david 25 desired output file1 alias george file2 david awk'{if($

我想根据column2的值从文本文件中提取column1。只有当column2大于20时,我才需要打印column1。我还需要打印带有输出的文件名。我怎样才能用awk做到这一点

file1.txt 

alias    23
samson   10
george   24

file2.txt 

andrew   12
susan    16
david    25   

desired output

file1

alias
george

file2

david
awk'{if($2>20){打印文件名“$1}}'

见下文:

> awk '$2>20{if(file!=FILENAME){print FILENAME;file=FILENAME}print}' file1 file2
file1
    alias    23
    george   24
file2
    david    25

这可能适合您:

awk '$2>20{print $1}' file1 file2
如果您想要文件名和更漂亮的打印:

awk 'FNR==1{print FILENAME} $2>20{print "    ",$1}' file1 file2

更好的办法是,去掉“如果”和外面的一对括号。@Lars Kotthoff谢谢你的回答。文件名不随输出一起打印。相反,文件的内容正在打印。哦,对不起,这是一个打字错误——它应该是没有$的文件名。我会解决的。
awk 'FNR==1{print FILENAME} $2>20{print "    ",$1}' file1 file2