2つのテキストファイルがあります。名前をfile1.txtとfile2.txtとして指定します。
file1.txtは次のようになります
chr10 181144 225933
chr10 181243 225933
chr10 181500 225933
chr10 226069 255828
chr10 255989 267134
chr10 255989 282777
chr10 267297 282777
chr10 282856 283524
chr10 283618 285377
chr10 285466 285995
file2.txtは次のようになります
chr10 181144 225933
chr10 181243 225933
chr10 181500 225933
chr10 255989 282777
chr10 267297 282777
chr10 282856 283524
chr10 375542 387138
chr10 386930 387138
chr10 387270 390748
chr10 390859 390938
chr10 391051 394580
chr10 394703 395270
単一ファイルとして出力したいのは
- file1とfile2の間のすべての共通行
- 両方のファイルに共通していないfile1のすべての行
- 両方のファイルに共通ではないfile2のすべての行。
私はこれを行うためにPerlスクリプトを書いたが、コマンドラインまたはより簡単な方法があると確信しています。
ベストアンサー1
両方のファイルに共通する行は次のとおりです。
comm -12 file1.txt file2.txt > results.txt
file1.txtに関連する行を追加します。
comm -23 file1.txt file2.txt >> results.txt
file2.txtに関連する行を追加します。
comm -13 file1.txt file2.txt >> results.txt
ファイルがまだソートされていない場合、たとえばシェルがプロセス置換をサポートしている場合は、事前にソートする必要があります。
comm -12 <(sort file1.txt) <(sort file2.txt)
など。