2016-07-14 11 views
0

2つのファイルに違いがあるかどうかを判断するループです。違いがある場合は、それらの違いをテキストファイルに追加して、特定の同僚に電子メールで送信する必要があります。diff出力をフォーマットして "現在値の前回値"を表示する

私は現在、そのコマンドの出力、そして得られた電子メールは、受信者のための読みやすい形式になっています -y 差分を使用しようとしています。

私は生の違いを取得するために使用しているコマンドはこれです:

diff -y unita3x0101.pre unita3x0101.pre.v1 | grep "|" >> filetoemail.txt

私に次のような出力与える:私が探している何

command=(PV SY 102) - PV SY 102 7:54:38      | command=(PV SY 102) - PV SY 102 7:27:47 
command=(PV SY 906) - PV SY 906 2600.000 Inj#1 K-Fact   | command=(PV SY 906) - PV SY 906 5200.000 Inj#1 K-Fact 
command=(PV SY 907) - PV SY 907 0.8424 Inj#1 Mtr-Fact   | command=(PV SY 907) - PV SY 907 0.9600 Inj#1 Mtr-Fact 
command=(PV SY 912) - PV SY 912 0.1560 Inj#2 Mtr-Fact   | command=(PV SY 912) - PV SY 912 1.3109 Inj#2 Mtr-Fact 

を、この次のとおりです。

Current - PV SY 102 7:54:38      Previous - PV SY 102 7:27:47 
Current - PV SY 906 2600.000 Inj#1 K-Fact   Previous - PV SY 906 5200.000 Inj#1 K-Fact 
Current - PV SY 907 0.8424 Inj#1 Mtr-Fact   Previous - PV SY 907 0.9600 Inj#1 Mtr-Fact 
Current - PV SY 912 0.1560 Inj#2 Mtr-Fact   Previous - PV SY 912 1.3109 Inj#2 Mtr-Fact 

私が望む出力に最も近いのは、これを使用したものです。

diff -y unita3x0101.pre unita3x0101.pre.v1 | grep "|" | sed s/\command=\(PV/Current\ \/| sed s/\command=\(PV/Previous\ \ /

しかし、それはすべての不要な文字を削除しません:

Current SY 102) - PV SY 102 7:54:38      | Previous SY 102) - PV SY 102 7:27:47 
Current SY 906) - PV SY 906 2600.000 Inj#1 K-Fact   | Previous SY 906) - PV SY 906 5200.000 Inj#1 K-Fact 
Current SY 907) - PV SY 907 0.8424 Inj#1 Mtr-Fact   | Previous SY 907) - PV SY 907 0.9600 Inj#1 Mtr-Fact 
Current SY 912) - PV SY 912 0.1560 Inj#2 Mtr-Fact   | Previous SY 912) - PV SY 912 1.3109 Inj#2 Mtr-Fact 

は、私は出力がより「ユーザーフレンドリー」にする/使用を追加することができます別の方法、またはそれ以上のsedコマンドがあります?

+1

Perlやawkは簡単にsedのよりも、このタスクを達成することができます。 – axiac

+0

それは私が必要なものです! awk -F '[)|]'を使って "Current $ 2 Previous $ 4"を印刷すると、私に必要なものが与えられます。本当にありがとう! –

答えて

1

あなたはこのawkコマンドへのパイプdiffgrepを避けることができます。

diff -y unita3x0101.pre unita3x0101.pre.v1 | 
awk -F ' - |[[:blank:]]*\\|' '/[|]/{printf "%-40s\t\t%-40s\n", 
     "Current - " $2, "Previous - " $4}' 

Current - PV SY 102 7:54:38     Previous - PV SY 102 7:27:47 
Current - PV SY 906 2600.000 Inj#1 K-Fact  Previous - PV SY 906 5200.000 Inj#1 K-Fact 
Current - PV SY 907 0.8424 Inj#1 Mtr-Fact  Previous - PV SY 907 0.9600 Inj#1 Mtr-Fact 
Current - PV SY 912 0.1560 Inj#2 Mtr-Fact  Previous - PV SY 912 1.3109 Inj#2 Mtr-Fact 
関連する問題