2016-11-01 15 views
1

の内容を比較、 `FILE1.TXTは、変数のみが含まれています例えば2つの異なるファイル

< a /x/y/1.c 
< c /x/d/7.h 
< f /x/c/6.s 
< b /x/v/8.mk 
< t /x/1.h 
< d /x/5.so 

file1.txt変数と比較する必要があります。

a 
b 
d 
c 

file2.txtは、変数とパスは、<が含まれていますfile2.txt。一致するものが見つかった場合は、完全な変数とパスをfile2.txtから出力する必要があります。

予想される出力:

< a /x/y/1.c 
< b /x/v/8.mk 
< d /x/5.so 
< c /x/d/7.h 

私はcomm -3 file1.txt file2.txtてみましたが、それが効果的に機能していません。

diff私の場合は使用できません。

+1

[編集ヘルプ](http://stackoverflow.com/editing-help)を見てください。 C D テキスト2: – Cyrus

+0

こんにちは、私たちは text1.txtファイル以下のように変数を比較することができます。TXTファイル: 私はCOMMを使用FILE2.TXTの内容でFILE1.TXT内容を比較しようとしています B C D 電子 、diffは、それらが所望の結果に を与えていないコマンドに参加します予想される出力は次のようである: B 電子 FILE1.TXTはFILE2.TXTと比較し、一致が見つかった場合には、マッチしたcontents.It iがFILE1.TXTとfile2の両方が異なる変数だけをしたい意味印刷するはずの.txt –

答えて

0

file2.txtの行が<で始まらない場合は、これを使用できます。

join <(sort file1.txt) <(sort file2.txt) 

< charで始まる場合は、これを使用できます。

join -11 -22 <(sort file1.txt) <(sort file2.txt) 

例:

[email protected]:/tmp$ join -11 -22 <(sort file1.txt) <(sort file2.txt) 
a < /x/y/1.c 
b < /x/v/8.mk 
c < /x/d/7.h 
d < /x/5.so 

-11 -22キーはどこにもパスしていないときのためにFILE2.TXT 2列(「<」チャー後)

0

溶液を意味する、FILE1.TXTおよび最初の列を意味します。 試してみる

cat file2.txt | grep -f file1.txt 

必要に応じてファイル名を切り替えます。

+0

パスにキーが含まれていると予想より多くを返すことがある –

+0

これは本当ですが、私はこれを考慮に入れませんでした。 –

0

あなたがシェルを求めたが、私はあなたがrun.pyにそれを保存した場合、あなたはそのような

python3 run.py file2.txt file1.txt > output.txt 

ことを呼び出すことができますそれはまたに比べfile1.txtの順序を維持するのpython

import sys 

with open(sys.argv[1], "r") as f: 
    d = dict((e.rstrip().split()[1], e) for e in f) 

with open(sys.argv[2], "r") as f: 
    for e in f: 
     e = e.rstrip() 
     if e in d: 
      print(d[e], end="") 

経由で答えるでしょうソリューションをソートするが、第2のファイルをメモリにロードする。

0

AWKは、これらのもののために良いです:

$ awk 'NR == FNR {keys[$0] = 1; next}keys[$2]' file1.txt file2.txt 
< a /x/y/1.c 
< c /x/d/7.h 
< b /x/v/8.mk 
< d /x/5.so 

は基本的にFILE1.TXT keys配列にバッファリングされます。そして、列2が上記の配列に含まれていれば、file2の各行が出力されます。

+0

@BabaDどういう意味ですか? – andlrc

+0

私の場合、私は両方のfile1.txt、file2.txtで異なる変数を印刷しようとしています。 私はcomm、diff、Joinを使ってみましたが、多数のファイルに対して有効な結果が得られません。 –

+0

'私のケースでは、file1.txt、file2.txtの両方で異なる変数を出力しようとしています。 'keys [$ 2]'を '!keys [$ 2]'に変更してください – andlrc

関連する問題