当包含字符串的行仅包含两个值时,如何删除该行?

当包含字符串的行仅包含两个值时,如何删除该行?

如果这些行仅包含两个值(列),我想删除具有特定字符串的所有文件行。我尝试使用这个 sed 但这会删除包含该字符串的所有行

sed '/string/d' file

ex 对于 XX 字符串,输入文件是

A B C D 
XX 5 6 
XX 2
XX 1 2 3

输出文件是

A B C D 
XX 5 6 
XX 1 2 3

答案1

一种方法是使用模式部分评估为 true 以默认打印该行:

awk -v str="XX" '
  NR == 1 || $1 != str || NF != 2
' file

假设目标字符串仅在第一个字段中匹配。

相关内容