
こんばんは。教えてください!
以下のような2つのファイルがあるとします。
・aaa.txt
abc111
abc222
abc333
・bbb.txt
abc333
abc444
これを比較して、比較結果をテキスト出力したいです。
テキスト出力したい比較結果は
(1)重複しているもの全てテキスト出力
(2)aaa.txtのみにあるものをテキスト出力
(3)bbb.txtのみにあるものをテキスト出力
また、(1)~(3)は別々のファイルに出力したいです。
diffコマンドで、
diff a.txt b.txt >> c.txt
とすると、
1つのテキストファイル(c.txt)に
(1)~(3)すべてが書かれてしまいます。
環境は、windows XPにてCygwinを使用しています。
diffコマンドでなくても構いません。
宜しくお願いします。

No.2ベストアンサー
- 回答日時:
このような場合はuniqコマンドを使うのがよいかと思います。
=======
aaa.txt
abc111
abc222
abc333
abc444
=======
bbb.txt
abc222
abc444
abc111
abc555
=======
のとき、
(1)重複しているもの
sort aaa.txt bbb.txt | uniq -d > 111.txt
(2)aaa.txtのみにあるもの
sort 111.txt aaa.txt | uniq -u > 222.txt
(3)bbb.txtのみにあるもの
sort 111.txt bbb.txt | uniq -u > 333.txt
でできます。
aaa.txt、bbb.txtのそれぞれの内容がユニークで無い場合(例えば、aaa.txtに「abc222」が複数含まれるなど)、あらかじめuniqにしておかなければなりませんが。
ありがとうございます!
できました!!!!
uniqでできるんですね。diffばかり頭にあって。。
aaa.txt、bbb.txtのそれぞれの内容はユニークで大丈夫です!
コマンドをもっと勉強しなければならないと痛感しました。
ありがとうございました!
No.1
- 回答日時:
diff -y a.txt b.txt | grep "<" >onlya.txt
diff -y a.txt b.txt | grep ">" >onlyb.txt
diff -y a.txt b.txt | grep -v [\<\>] >both.txt
*一応*これでできると思いますが。(both.txtは余計なもの入るかも)
ありがとうございます!
無事できました!!!
のですが、たとえば
・a.txt
abc111
abc222
abc333
abc444
・b.txt
abc222
abc444
abc111
のように、順番がばらばらの場合、うまく出来ませんでした。
そこで
A=`sort a.txt`
B=`sort b.txt`
diff -y $A $B | grep "<" >onlya.txt
diff -y $A $B | grep ">" >onlyb.txt
diff -y $A $B | grep -v [\<\>] >both.txt
として実行したところエラーが出てしまい、
onlya.txt、onlyb.txt、both.txt
には何も入っていませんでした・・・。
エラー文は
diff:extra operand `abc333'
diff:Try `diff --help' for more information.
diff:extra operand `abc333'
diff:Try `diff --help' for more information.
diff:extra operand `abc333'
diff:Try `diff --help' for more information.
です。。。
すみません。。
どなたかお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
xcopyで特定のファイルのみをコ...
-
コマンドプロンプトで標準エラ...
-
echoの出力の最後のスペースを...
-
bashで、gotoのようなラベルに...
-
コマンドにてテキストファイル...
-
nkfで全角ハイフンが半角になる...
-
コマンドプロンプトで相対パス...
-
FTPのバッチファイルで日付を引...
-
コマンドプロンプトによるファ...
-
バッチファイルのfor文の使い方...
-
echo "abc" >> test.txt で、先...
-
バッチファイルで改行の出力
-
複数テキストファイル連結につ...
-
バッチファイルのfor文を使って...
-
コマンドプロンプトの「%1」と...
-
コマンドプロンプトのエラーに...
-
エクセルのVBAについて とある...
-
大量のフォルダからひとつのフ...
-
[teraterm] waitコマンドで停止...
-
バッチでテキストファイルから...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
xcopyで特定のファイルのみをコ...
-
echoの出力の最後のスペースを...
-
echo "abc" >> test.txt で、先...
-
コマンドプロンプトで相対パス...
-
【VBA】テキストファイルから特...
-
リダイレクト >> を複数のファ...
-
コマンドにてテキストファイル...
-
コマンドプロンプトで標準エラ...
-
コマンド実行結果を環境変数に...
-
バッチファイル 現在のフォルダ...
-
バッチファイル 指定行の切り出し
-
bashで、gotoのようなラベルに...
-
NULLの置き換えについて
-
UNIX ファイル存在チェックの方法
-
ワードのテキストボックスの中...
-
.txtって、縦書きにはならない...
-
複数テキストファイル連結につ...
-
バッチコマンドの「set」で入力...
-
ダウンロードするとメモ帳に表...
-
バッチファイルで改行の出力
おすすめ情報