
こんばんは。教えてください!
以下のような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で質問しましょう!
似たような質問が見つかりました
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 入力待ちをして、受け取った正の整数が表す行数だけ既存 4 2022/07/05 10:12
- UNIX・Linux linuxシェルスクリプト(baシェル)でファイルにかかれた数式を評価し計算する方法を教えてください 1 2022/08/26 14:28
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- UNIX・Linux Ubuntu22.04、nanoエディタの使い方について 2 2022/10/24 19:50
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/03 13:18
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- UNIX・Linux Linuxについて質問です。 シェルスクリプト名をdiff.shとして、以下のように2つのテキストフ 1 2023/02/03 20:06
- PDF PDFの出力時のファイル名を消したい 3 2022/09/05 01:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
xcopyで特定のファイルのみをコ...
-
複数のファイルの追加
-
リダイレクト >> を複数のファ...
-
バッチコマンドの「set」で入力...
-
bat処理の実行結果ログ出力方法...
-
NULLの置き換えについて
-
コマンド実行結果を環境変数に...
-
【VBA】テキストファイルから特...
-
コマンドプロンプトで相対パス...
-
apple scriptファイル名の一部...
-
.txtって、縦書きにはならない...
-
echo "abc" >> test.txt で、先...
-
大量のフォルダからひとつのフ...
-
コマンドプロンプトの「%1」と...
-
コマンドプロンプトのエラーに...
-
ページ間でデータを渡したい.
-
[teraterm] waitコマンドで停止...
-
VBscriptが起動しない?
-
一括でフォルダと同じ名前にフ...
-
ラッパーって何なんでしょう・...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
echoの出力の最後のスペースを...
-
xcopyで特定のファイルのみをコ...
-
【VBA】テキストファイルから特...
-
リダイレクト >> を複数のファ...
-
コマンドプロンプトで相対パス...
-
echo "abc" >> test.txt で、先...
-
コマンドにてテキストファイル...
-
FTPのバッチファイルで日付を引...
-
バッチファイルで改行の出力
-
NULLの置き換えについて
-
バッチファイル 現在のフォルダ...
-
バッチファイル 指定行の切り出し
-
bat処理の実行結果ログ出力方法...
-
コマンド実行結果を環境変数に...
-
bashで、gotoのようなラベルに...
-
複数テキストファイル連結につ...
-
コマンドプロンプトで標準エラ...
-
【DOSコマンド】for の デリミ...
-
バッチファイルのfor文の使い方...
-
.txtって、縦書きにはならない...
おすすめ情報