Unixでファイルの最初の2つの列から同じ値を持つ行を削除する方法は?

Unixでファイルの最初の2つの列から同じ値を持つ行を削除する方法は?

複数の列を含むファイルがあります。最初の列と2番目の列が同じ値を表すこのファイルから行全体を削除したいと思います。

たとえば、私のファイルは次のようになります。

Variant         rsid         chr     pos
1:10177_A_AC    rs367896724     1    10177
1:10352_T_TA    rs201106462     1    10352
1:10511_G_A     rs534229142     1    10511
1:10616_CCGCCGTTGCAAAGGCGCGCCG_C        1:10616_CCGCCGTTGCAAAGGCGCGCCG_C        1       10616

列の値が列とVariant同じ行を削除したいrsidので、次の最終ファイルを取得したいと思います。

Variant         rsid         chr     pos
1:10177_A_AC    rs367896724     1    10177
1:10352_T_TA    rs201106462     1    10352
1:10511_G_A     rs534229142     1    10511

次のコマンドを実行してみました。

awk '$1==$2{sed -i} input.file > output.file

awk -F, '$1==$2' input.file > output.file

しかし、それらのどれも動作しません。

この問題をどのように使用またはawk解決できますかsed

ベストアンサー1

あなたはほぼ成功しました

awk '$1!=$2' input.file > output.file

これにより、最初のフィールドと2番目のフィールドは異なる行を保持します(したがって同じ場合は削除されます)。

  • -F,,フィールド区切り文字ではないため、この設定はawkが行の内容を誤解する可能性があります。
  • '$1==$2{sed -i}awkやsed機能ではありません。

おすすめ記事