2017-04-21 7 views
0

3つの列と異なる番号を含む100のファイルがあります。行の3つの列にはすべて繰り返し要素が含まれます。私はすべての100のファイルの中の共通の要素を探したい。すべてのファイルから共通の要素を見つける3列で行数が異なる

1.TXT

5901 5902 8229 
5901 5902 17481 
5901 5902 27561 
5929 5930 12875 

2.txt

5901 5902 8229 
5929 5930 12875 

など: ファイルは次のようになり。 for((i = 0; i < = 100; i ++)) do comm -12ファイル - "$ i" .txtファイル - "$((i + 1) ) "。txt> common-element - " $ i ".txt done

私はcommコマンドを使用しましたが、それは2つのファイルのみでした。私はそのようなファイルを100持っています。どんな助けもありがとう。 ありがとうございます。

+0

あなたの*共通の要素は何ですか? – RomanPerekhrest

+0

私が上に示したファイルは、5901のような共通の要素を持っています。5902 8229 –

+0

2つのファイルに対して試した 'comm'コマンドを追加します... 2つのファイルを解決しましたか?そうであれば、前の質問に示されているように、ループをうまく使うことができます:https://stackoverflow.com/questions/43472246/finding-common-value-across-multiple-files-containing-single-column-値 – Sundeep

答えて

0

ファイル内で値が一意である場合、すべてのファイルをソートした後にuniq -cで実行できるファイルの数と等しいものを選択できますが、ソートは不要です以下の代替案を使用してください。

awkレスキュー!

awk '{$1=$1} ++a[$0]==(ARGC-1)' file{1..100}.txt 

5901 5902 8229 
5929 5930 12875 

$1=$1文は、それはあなたの例では一致していないですので、空白を正規化することです。

+0

上記のawkの使用方法上記の2つのファイルのみのための100のファイルのためのコマンド。 –

+0

制限はありません。すべての名前をリストしたり、bash拡張を使用したり、globbingやディレクトリの内容をすべて使用することができます。 – karakfa

+0

ありがとうございます。これは本当に役に立ちました。 –

関連する問題