file1.txt(50行)
TERYUFV00000010753
TERYUFV00000009526
file2.txt(500行)
TERYUFV00000009526 refids_739_known_8/10_target
TERYUFV00000018907 refids_12023_known_21/22_target
TERYUFV00000010753 refids_11775_known_1/1_target
出力.txt
TERYUFV00000010753 refids_11775_known_1/1_target
TERYUFV00000009526 refids_739_known_8/10_target
file1.txt(50行)とfile2.txt(500行)を比較し、file2.txtからfile1.txtと同じリストを取得します。
Joinコマンドとfgrepコマンドを試しましたが、空のファイルが出力されます。
答え1
結合を使用すると、各行のエントリはデータベースの「セル」に似ていますが、ソートする必要があるため、試してみることができます。
sort file1.txt > file1_t.txt
sort file2.txt > file2_t.txt
その後、接続
$ join file1_t.txt file2_t.txt
これにより、両方のファイル内のすべてのセル項目のリストである外部結合が提供されます。このリストを 2 つのファイルエントリに減らすには、上記のコマンドの出力を uniq にパイプします。
$ join file1_t.txt file2_t.txt | uniq
答え2
fgrep -f file1.txt file2.txt
ここでは、file1.txtから検索パターンを取得し、file2.txtで検索します。テキストが固定されているため、fgrep
より高速な検索操作に使用します。
答え3
sort
あなたはあなたの前にいるべきですjoin
。
$ cat a.in
TERYUFV00000010753
TERYUFV00000009526
$ cat b.in
TERYUFV00000009526 refids_739_known_8/10_target
TERYUFV00000018907 refids_12023_known_21/22_target
TERYUFV00000010753 refids_11775_known_1/1_target
$ join a.in b.in
$ join <(sort a.in) <(sort b.in)
TERYUFV00000009526 refids_739_known_8/10_target
TERYUFV00000010753 refids_11775_known_1/1_target
答え4
次の行は有効ですか?
grep -iw -f file1.txt file2.txt
ファイルがWindowsクライアントからサーバーにアップロードされる場合は、まずdos2unixを実行する必要があります。
dos2unix file1.txt file2.txt
上記のコマンドが機能しない場合は、次の行を試して、file1.txt行の先頭または末尾に追加の印刷されない文字があるかどうかを確認できます。 file1.txtエントリに印刷されない不要な文字があると、file2.txtのgrepが失敗する可能性があります。
cat -v file1.txt
sed -n -l file1.txt