2016-08-03 34 views
0

我已标签delimted txt文件löike如下:滤波行使用AWK

A 1 A1g DELL 
A 1 B1s HP 
A 7 Zfd Nog 
A 5 Jgf KIT 
A 1 Def JOP 

除第一行,我想只保留在其中第二列具有值> 1的那些行。

A 1 A1g DELL 
A 7 Zfd Nog 
A 5 Jgf KIT 

我试过awk '{if($2>1) print }' file.txt但它也省略了第一行。如何检查跳过第一行并检查其他行的条件($2 >1)。提前致谢。

回答

0

在AWK:

$ awk 'NR==1||$2>1' test.in 
A 1 A1g DELL 
A 7 Zfd Nog 
A 5 Jgf KIT 
+0

感谢。如果我想腾出最后一行,那么'awk'NR == 5 || $ 2> 1''工作,如何通过不直接提供5来告诉awk仅备份最后一行 – Chudar

+0

可能将当前记录存储到变量中,并在将当前当前记录存储到同一个变量之前在下一轮中处理它(哇,这很难说出来,更容易编码):'awk'NR> 1 && b> 1 {print a} {a = $ 0; b = $ 2} END {print a}'test.in'打印行3,4和5 。 –

+0

最近版本的** GNU awk **提供了特殊模式[BEGINFILE和ENDFILE](https://www.gnu.org/software/gawk/manual/html_node/BEGINFILE_002fENDFILE.html#index-ENDFILE-pattern)。 – davidedb