2つの別々の列にある場合は、文字列を印刷します。

2つの別々の列にある場合は、文字列を印刷します。

2つの列を持つテキストファイルがあり、両方の列にある文字列のみを印刷したいと思います。たとえば、

column1       column2

stringA       stringZ
stringP       stringT
stringZ       stringX
stringE       stringR
stringT       stringG

予想出力:

stringZ
stringT

ベストアンサー1

いくつかの改善点を含め、@cherdtからはっきりと盗まれましたzshbashksh

f=filename; comm -12 <(cut -f1 < "$f" |sort) <(cut -f2 < "$f" | sort)
  • ファイル名を変数に保存すると、重複しないようになります。
  • ファイルに書き込んでから比較する必要はありません。通常、ファイルを書き込むには、後でクリーンアップするために削除する必要があります。しかし、大容量ファイルにはこれをしないでください。プロセス置換を使用すると、実際に一時ファイルにリダイレクトするcommときにファイルから読み取られるように見えます。stdoutfd

おすすめ記事