2016-07-14 2 views
0

나는 두 파일 사이에 차이가 있는지를 결정하는 루프에 대해 을 가지고 있습니다. 차이점이있을 경우 텍스트 파일에 이러한 차이점을 추가하여 특정 동료에게 이메일로 보내야합니다."현재 값 이전 값"을 표시하도록 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 

내가 '사용자 친화적 인'더 출력을 만들기 위해/사용을 추가 할 수있는 또 다른 방법, 이상 나오지 명령 있는가 ?

+1

펄이나 AWK 쉽게 나오지보다이 작업을 수행 할 수있다. – 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