Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 跳过第二列有字符串的行_Regex_Awk - Fatal编程技术网

Regex 跳过第二列有字符串的行

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

我的CVS文件有10列,我想去掉第二个字段($2)中以“同义”开头的字符串。我试过这个:

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!~/^同义/