new.txt
新しいファイル(例)と古いファイル(例old.txt
)を比較して、新しいファイルに追加された内容を確認したいと思います。新しく追加された情報をという名前の新しいファイルに追加し、変更されnewCourses.txt
た情報をに追加しようとしていますmodifiedCourses.txt
。 diffでこれが可能でない場合、パッケージやソフトウェアをインストールせずに代替策は何ですか?
old.txt
2016 2BUSI 4850 K002 BUSINESS MW 02:10P-09:30P
2016 2BUSI 4840 K002 PRESPECH MW 07:10P-09:30P
2016 2BUSI 4820 K002 SCHLOFSC MW 07:10P-09:30P
2016 2BUSI 4870 K002 HISTORYZ MW 04:10P-09:30P
new.txt
2016 2BUSI 4850 K002 BUSINESS MW 07:10P-09:30P
2016 2BUSI 4840 K002 PRESPECH MW 07:10P-09:30P
2016 2BUSI 4820 K002 SCHLOFSC MF 07:10P-09:30P
2016 2BUSI 4870 K002 HISTORYZ MW 06:10P-09:30P
2017 4NONE 2938 K112 RECREATI TS 11:10P-11:55P
これを行うときの出力は次のとおりですdiff old.txt new.txt
。
1c1
< 2016 2BUSI 4850 K002 BUSINESS MW 02:10P-09:30P
---
> 2016 2BUSI 4850 K002 BUSINESS MW 07:10P-09:30P
3,4c3,5
< 2016 2BUSI 4820 K002 SCHLOFSC MW 07:10P-09:30P
< 2016 2BUSI 4870 K002 HISTORYZ MW 04:10P-09:30P
\ No newline at end of file
---
> 2016 2BUSI 4820 K002 SCHLOFSC TF 07:10P-09:30P
> 2016 2BUSI 4870 K002 HISTORYZ MW 06:10P-09:30P
> 2017 4NONE 2938 K112 RECREATI TS 11:10P-11:55P
\ No newline at end of file
newCourses.txt
たとえば、次の2つの異なるファイルに出力するにはどうすればよいですか?
2017 4NONE 2938 K112 RECREATI TS 11:10P-11:55P
そしてmodifiedCourses.txt
含める
2016 2BUSI 4850 K002 BUSINESS MW 07:10P-09:30P
2016 2BUSI 4820 K002 SCHLOFSC TF 07:10P-09:30P
2016 2BUSI 4870 K002 HISTORYZ MW 06:10P-09:30P
答え1
あなたが使用できるawk
:
awk 'NR==FNR{ z[$5]=$0; next}{ if ($5 in z){ if ($0!=z[$5]){
print >"modifiedCourses.txt"}} else { print >"newCourses.txt"}}' old.txt new.txt
これはold.txt
行を読み取り、配列に保存します(インデックスはコースの名前です)。次に、new.txt
各コースを読み、配列のインデックスであることを確認します。その場合は行が変更されたことを確認し、そうであれば変更されたことを確認します。 will印刷しますmodifiedCourses.txt
。インデックスでない場合、重要な変更が時間だけの場合は、newCourses.txt
次の$0
行を印刷します。$7