跳过第2列有字符串的行

时间:2013-08-19 18:42:15

标签: regex awk

我的CVS文件有10列,我想摆脱第二个字段($ 2)字符串以“synonymous”开头的行。我试过这个:

awk '$2 ~ /^synonymous/ {next}'

但它不打印任何东西。

3 个答案:

答案 0 :(得分:4)

你需要告诉awk你想做什么。到目前为止,你刚刚告诉它跳过第二个字段以“同义词”开头的记录,但你还没有告诉awk对其余部分做任何事情。试试这个:

awk '$2 !~ /^synonymous/'

说“如果第二个字段不是以同义词开头,则调用打印记录的默认操作”。

答案 1 :(得分:3)

next会跳过记录,但代码中没有任何内容可以打印任何内容。

您需要打印与模式不匹配的记录:

awk '$2 ~ /^synonymous/ {next} {print}'

这可以简化如下:

awk '$2 !~ /^synonymous/ {print}'

由于print是默认命令,因此可以进一步简化为

awk '$2 !~ /^synonymous/'

(HT @Jotne。)

答案 2 :(得分:2)

您需要打印不包含同义词的行,1执行tric

awk '$2 ~ /^synonymous/ {next}1'
PS解决方案Ed Morton发布的是最好的:)。