1

我的输入文件有以下条目:

0100000000010001000   1       GWSL7YE02GHT73, 
0010000000000000000   1       GWSL7YE02GU6GK, 
0000000000000000000   1       GWSL7YE02G5W2B, 
0010000000110000000   1       GWSL7YE02I364F, 
0000000000000000000   1       GWSL7YE02F4IOC, Escherichia_coli_O127:H6

我怎样才能只捕获末尾有字符串的行,例如第 5 行。另外需要注意的是,在每一行中都有两个转义序列“\t”“\n”。所以在第 1-5 行中不要认为在 "," 之后有转义字符 "\n",但实际上它是 "\t""\n"。我确实有以下 awk 代码:awk '{if ($0~/[A-Z0-9_]$/) print$NF}',但是,这假设有字母,最后有多少 undescore。实际上,名称可以以任何特殊字符结尾。我已经测试过,因此我必须加上下划线“_”。那么除了这个还有其他方法吗。我可以有一些东西吗awk '{if ($NF!~/an expression that maps ,\n\t/}'

谢谢

4

2 回答 2

1

只需查找字段大于 3 的行

awk 'NF>3' ./infile

概念证明

$ cat -A lastfield
0100000000010001000   1       GWSL7YE02GHT73,^I$
0010000000000000000   1       GWSL7YE02GU6GK,^I$
0000000000000000000   1       GWSL7YE02G5W2B,^I$
0010000000110000000   1       GWSL7YE02I364F,^I$
0000000000000000000   1       GWSL7YE02F4IOC,^IEscherichia_coli_O127:H6^I$

$ awk 'NF>3' lastfield
0000000000000000000   1       GWSL7YE02F4IOC,   Escherichia_coli_O127:H6
于 2011-03-09T01:25:04.497 回答
0

你也可以试试

awk -F, 'NF>1' file
于 2011-03-09T01:59:04.010 回答