1

次のようなデータを持つ 2 つのテキスト ファイルがあります。

Mon-000101,100.27242,9.608597,11.082,10.034,0.39,I,0.39,I,31.1,31.1,,double with 1355,,,,,,,,
Mon-000171,100.2923,9.52286,14.834,14.385,0.45,I,0.45,I,33.7,33.7,,,,,,,,,,
Mon-000174,100.27621,9.563802,11.605,10.134,0.95,I,1.29,I,30.8,30.8,,,,,,,,,,

Mon-000101(1 つの ID の例として) 文字に基づいて 2 つのファイルを比較して、それらの相違点を確認したいと考えています。別の質問diffで見つけたいくつかのコマンドを試しましたが、うまくいきませんでした。アイデアがないので、自分よりも経験豊富な人に頼っています。

ありがとう。

HazMatt:Desktop m$ diff NGC2264_classI_h7_notes.csv /Users/m/Downloads/allfitclassesI.txt 
1c1
Mon-000399,100.25794,9.877631,12.732,12.579,0.94,I,-1.13,I,9.8,9.8,,"10,000dn vs 600dn brighter source at 6 to 12"" Mon-000402,100.27347,9.59Mon-146053,100.23425,9.571719,12.765,11.39,1.11,I,1.04,I,16.8,16.8,,"double 3"" confused with 411, appears brighter",,,,,,,,
\ No newline at end of file
---
Mon-146599                    Mon-146599   4.54      I   4.54      III
\ No newline at end of file

これが私の試みであり、結果でした。問題は、ファイルが11行異なることを知っているということです... 11の不一致の値に対応します。私はこれを手作業で行いたくありません (誰がするでしょうか?)。差分出力を読み間違えているのかもしれません。しかし、私はこれ以上のものを期待しています。

4

3 に答える 3

1

やってみました :

diff `cat file_1 | grep Mon-00010` `cat file_2 | grep Mon-00010`
于 2013-10-30T06:16:58.080 に答える
0

何をお探しかわかりませんが、お役に立てれば幸いです。それ以外の場合は、入力ファイルと目的の出力の例をいくつか挙げることができます。

私の入力ファイルは次のとおりです。

prompt> cat in1.txt 
Mon-000101,100.27242,9.608597,11.082,10.034,0.39,I,0.39,I,31.1,31.1,,double with 1355,,,,,,,,
Mon-000171,100.2923,9.52286,14.834,14.385,0.45,I,0.45,I,33.7,33.7,,,,,,,,,,
Mon-000174,100.27621,9.563802,11.605,10.134,0.95,I,1.29,I,30.8,30.8,,,,,,,,,

prompt> cat in2.txt 
Mon-000101,111.27242,9.608597,11.082,10.034,0.39,I,0.39,I,31.1,31.1,,double with 1355,,,,,,,,
Mon-000172,100.2923,9.52286,14.834,14.385,0.45,I,0.45,I,33.7,33.7,,,,,,,,,,
Mon-000174,122.27621,9.563802,11.605,10.134,0.95,I,1.29,I,30.8,30.8,,,,,,,,,,

「ID」(それが何を意味するにせよ)だけに興味がある場合は、それを分離する必要があります。ID は最初のカンマの前のタグであると想定しているため、ID 以外のすべてを切り取って比較することができます。

prompt> diff <(cut -d',' -f1 in1.txt) <(cut -d',' -f1 in2.txt)
2c2
< Mon-000171
---
> Mon-000172

ID がより複雑な場合は、正規表現を使用して grep できます。


さらにdiff -y、どの行が異なっているかを示す小さなグラフィック出力を提供します。これを使用して、完全なファイルを単に比較するか、前に説明したカットと使用できます。

prompt> diff -y <(cut -d',' -f1 in1.txt) <(cut -d',' -f1 in2.txt)
Mon-000101                          Mon-000101
Mon-000171                            | Mon-000172
Mon-000174                          Mon-000174
于 2013-10-30T21:45:23.313 に答える