我的CVS文件有10列,我想摆脱第二个字段($ 2)字符串以“synonymous”开头的行。我试过这个:
awk '$2 ~ /^synonymous/ {next}'
但它不打印任何东西。
答案 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发布的是最好的:)。