2017-05-15 4 views
-1

で複数のファイルの列を比較します。 a.txtとb.txtの最初の3行を例にとりましょう。は、私は同じ形式(タブで区切ら3列)内のいくつかのファイル、つまりA.TXT、B.TXT、c.txt、d.txtを、持っているbashコマンド

$head -3 a.txt 
id_1 59 4 
id_4 89 43 
id_5 8 90 

$head -3 b.txt 
id_1 9 4 
id_4 39 43 
id_5 81 9 

c.txtとd.txtはそれに似ています。

私は彼らからの最初の列はすべて同じであるかどうかを確認します。これを行うシェルには簡単な方法はありますか?

+1

何を試しましたか?私たちのほとんどはここであなたのクラフトを改善するのに役立ちますが、短期間の無償のプログラミングスタッフとしての行動はあまり幸せではありません。これまでの作業を[MCVE](http://stackoverflow.com/help/mcve)に見せて、あなたが期待していた結果と得られた結果をお見せしましょう。 – ghoti

+0

ありがとうございます。私は比較するためにcmpを使用するオンラインを見つけました。そして、これを試してみてください:cmp <(cut -f1 a.txt)<(cut -f1 b.txt)<(cut -f1 c.txt)<(cut -f1 d.txt)しかし、うまくいきませんでした。その後、cmpは2つのファイルに対してのみ動作することに気付きました。それから、私はこの複数ファイルのものに悩まされています。 – XiaokangZH

答えて

0

のawkで、それはかなりまっすぐ進むようになります:

awk 'NR==FNR{a[FNR]=$1;next}$1!=a[FNR]{print "They are dfifferent"; exit 1}' a.txt b.txt c.txt d.txt 

これは、我々が行の順序がない場合は、あまりにも一致するファイルをソートし、リピートしたいことを想定しています。

+0

ありがとうございます。それは完全に動作します!しかし、それがどのように詳細に機能するか説明してください。 – XiaokangZH

関連する問題