Awk 使用命令行从列值中选择行

Awk 使用命令行从列值中选择行,awk,command-line,Awk,Command Line,我有一个.tsv文件,格式如下: Year Region Subfunction Total 2007 Midwest General administration 4,652,314.25 2007 Midwest Child and teenager assistance 3,066,433.22 2007 Midwest Basic assistance 45,653,4

我有一个.tsv文件,格式如下:

Year    Region  Subfunction                     Total
2007    Midwest General administration          4,652,314.25
2007    Midwest Child and teenager assistance   3,066,433.22 
2007    Midwest Basic assistance                45,653,414.66
2007    Midwest International cooperation       985,859.30
如何使用两列条件打印所有行,例如,打印年份==2009和地区==south的所有行

awk '$1==2009 && tolower($2)=="south"' file
如果要打印页眉,可以

awk 'NR==1 || (...)'
如果要打印页眉,可以

awk 'NR==1 || (...)'
我也应该这样做。这假设年份在开头显示为完整的4位数字(注意
^


我也应该这样做。这假设年份在开始时显示为完整的4位数字(注意
^

tolower($2)
是一个不错的选择:-)PlusOneThank you@karafka!太好了@karafka我如何在结果中保留标题(年份、地区、子功能、总计)?挑剔:添加
-F'\t'
,因为OP确实说这是一个TSV文件,所以我们知道,在他们的真实数据中,一个地区可能是“北欧”或其他有空格的地方。是的,如果在示例中包含这样的情况(如果可能发生),那就太好了,但是在这种情况下,OP甚至没有包括他想要在样本中找到的区域
tolower($2)
触感很好:-)PlusOneThank you@karafka!太好了@karafka我如何在结果中保留标题(年份、地区、子功能、总计)?挑剔:添加
-F'\t'
,因为OP确实说这是一个TSV文件,所以我们知道,在他们的真实数据中,一个地区可能是“北欧”或其他有空格的地方。是的,如果在示例中包含这样的情况(如果可能发生),那就太好了,但是在这种情况下,OP甚至没有包括他想要在样本中找到的区域!