2011-09-20 5 views
0

보고서 강타 : DIFF 내가 말하는 줄 텍스트 파일이 스크립트

File fileA and fileB differ 
File fileX and fileY differ 

내가 각 라인은 파일 이름을 구문 분석하고 명령 diff fileA fileB > fileA.diff

+1

좋습니다! 왜 그것은 bash 스크립트일까요? 해결책의 어느 부분을 골라야하는지 알려주십시오. 우리는 도움을 얻을 수 있도록 노력할 것입니다. 우리는 당신을 위해 당신의 일을하지 않을 것입니다. – Johnsyweb

답변

1
에게 실행을 위해 전체 파일을 통해가는 bash는 스크립트가 필요합니다

다음 명령 :

awk '/ differ$/ {print "diff "$2" "$4" >"$2".diff"}{}' 

이 작업을 수행 할 수있는 스크립트가 제공됩니다.

는 다음과 같은 성적표를 참조하십시오 :

pax$ echo 'File fileA and fileB differ 
hello 
File fileX and fileY differ' | awk ' 
    /differ$/ {print "diff "$2" "$4" >"$2".diff"}{}' 
diff fileA fileB >fileA.diff 
diff fileX fileY >fileX.diff 

캡처 출력을, 다음 bash 그것을 실행하고 당신은 당신이 필요로 할 것이다.

공백이있는 파일 이름에는 잘 작동하지 않으므로주의해야합니다. 이런 혹독한 짐승이 있다면 좀 더 지능적인 구문 분석을 수행해야합니다.

[[email protected]]$ sed -n 's/File \(.*\) and \(.*\) differ/diff "\1" "\2" > "\1.diff"/p' infile 
diff "fileA" "fileB" > "fileA.diff" 
diff "fileX" "fileY" > "fileX.diff" 

당신은 process substitution를 사용 bash에 전달하여 생성 된 명령을 실행할 수 있습니다

+0

감사합니다. 나는 지금 이것을 사용하고있다 : read line; do awk '/ differ $/{print "diff"$ 2 ""$ 4 ">"$ 2 ".diff"} {}'; done Michael

0

이 명령은 diff 명령의 목록을 생성합니다.

[[email protected]]$ bash <(sed -n 's/File \(.*\) and \(.*\) differ/diff "\1" "\2" > "\1.diff"/p' infile) 
관련 문제