2つの値のみを含む文字列を含む行をどのように削除できますか?

2つの値のみを含む文字列を含む行をどのように削除できますか?

行に2つの値(列)しか含まれていない場合は、特定の文字列を含むファイル行をすべて削除したいと思います。 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

1つの方法は、パターン部分を使用してtrueと評価し、デフォルトで行を印刷することです。

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

ターゲット文字列が最初のフィールドでのみ一致すると仮定します。

おすすめ記事