Regex 跳过第二列有字符串的行
我的CVS文件有10列,我想去掉第二个字段($2)中以“同义”开头的字符串。我试过这个:Regex 跳过第二列有字符串的行,regex,awk,Regex,Awk,我的CVS文件有10列,我想去掉第二个字段($2)中以“同义”开头的字符串。我试过这个: awk '$2 ~ /^synonymous/ {next}' 但它不会打印任何内容。跳过记录,但代码中没有任何内容可以打印 您需要打印与模式不匹配的记录: awk '$2 ~ /^synonymous/ {next} {print}' 这可以简化如下: awk '$2 !~ /^synonymous/ {print}' 由于print是默认命令,因此可以进一步简化为 awk '$2 !~ /^syn
awk '$2 ~ /^synonymous/ {next}'
但它不会打印任何内容。跳过记录,但代码中没有任何内容可以打印
您需要打印与模式不匹配的记录:
awk '$2 ~ /^synonymous/ {next} {print}'
这可以简化如下:
awk '$2 !~ /^synonymous/ {print}'
由于print
是默认命令,因此可以进一步简化为
awk '$2 !~ /^synonymous/'
(HT@Jotne。)您需要打印不包含同义词的行,1不包含同义词
awk '$2 ~ /^synonymous/ {next}1'
PS解决方案Ed Morton发布的是最好的:)你需要告诉awk你想做什么。到目前为止,您只是告诉它跳过第二个字段以“同义词”开头的记录,但您没有告诉awk对其余的记录做任何事情。请尝试以下方法:
awk '$2 !~ /^synonymous/'
也就是说,“如果第二个字段不是以同义词开头,那么调用打印记录的默认操作”。因为{print}是默认命令,所以可以删除它<代码>awk'$2!~/^同义/