1

私はこの2つのcsvファイルを持っています

古い.csv

station,32145,80
station,32145,60

new.csv

station,32145,80
station,32145,801

結果を期待する

結果.csv

station,32145,80,no change
station,32145,801,new
station,32145,60,Delete

diff仕事をするためにとを使用しawkましたが、少し問題があります。行が変更されていないか、削除された行が正しく更新されましたが、新しい行は変更されていません。誰でも私の間違いを教えてもらえますか?

diff -W999 --side-by-side old.csv new.csv | awk '/[|][\t]/{split($0,a,"[|][\t]");print a[2]" No Change"};/[\t] *<$/{split($0,a,"[|][\t]* *<$");print a[1]" Delete"};/>[\t]/{split($0,a,">[\t]");print a[2]" New"}'

4

2 に答える 2

2

のコード:


new末尾のコンマなし:

awk -v OFS="," 'NR==FNR {a[$0]=$0;next};{b[$0]=$0};$0==a[$0] {print $0, "no change"};a[$0]==0 {print $0, "new"};END {for (x in a) {if (b[x]==0) {print a[x], "Delete"}}}' old new

new末尾のコンマ付き:

$awk  -v OFS="" 'NR==FNR {a[$0","]=$0",";next};{b[$0]=$0};$0==a[$0] {print $0, "no change"};a[$0]==0 {print $0, "new"};END {for (x in a) {if (b[x]==0) {print a[x], "Delete"}}}' old new
于 2013-06-28T16:03:47.147 に答える