捕获字符串忽略转义序列

时间:2011-03-09 01:11:46

标签: string escaping awk sequences

我的输入文件包含以下条目:

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}',但是,这假设有字母表,结尾有非核心数。实际上,名称可以以任何特殊字符结束。我已经测试过,因此我必须使用下划线“_”。那么除此之外还有其他方法吗?我可以将某些内容设为awk '{if ($NF!~/an expression that maps ,\n\t/}'

由于

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您也可以尝试

awk -F, 'NF>1' file