현재 파일의 내용을 변경하려고 합니다.
orig.sas
업데이트 파일의 내용을 일치시키세요.
new.sas
orig.sas를 new.sas로 바꾸면 일부 변경이 이루어지지만 orig.sas는 변경하고 싶지 않은 많은 디렉터리를 참조합니다.
다음 코드를 제출하면 orig.sas를 new.sas와 동일하게 만들기 위해 변경해야 하는 모든 줄이 포함된 "changes.txt" 스크립트가 출력됩니다.
diff -e orig.sas new.sas > changes.txt
changes.txt는 다음과 같습니다(전체 출력에는 더 많은 줄이 있습니다).
3668c
label DBMS=xlsx replace;
.
3649,3665d
3643d
여기에서 참조 디렉터리에서 변경된 모든 줄을 제거했으므로 코드의 본문만 영향을 받았습니다.
다음을 사용하여 이 스크립트를 sed에 제출할 수 있어야 한다고 생각합니다(목적은 변경 사항을 모두 변경하는 것입니다.txt).
sed - orig.sas < changes.txt
하지만 orig.sas를 직접 덮어쓰고 싶지 않고 버전 2 파일(예: orig_v2.sas)로 출력하는 것을 선호합니다.
내 발전은 다음에서 비롯됩니다.https://www.computerhope.com/unix/udiff.htm
답변1
diff -e
결과는 에 공급(수정)되어야 합니다 ed
.
노력하다
diff -e orig.sas new.sas > changes.txt
echo wq >> changes.txt
ed orig.sas < changes.txt
어디
wq
~ 할 것이다승의식과큐uit, 쓴 문자 수를 인쇄합니다.- 선택 사항은
--silent
초과된 개수를 출력하지 않습니다.
자세한 내용은 을 참조하세요 man ed
.
편집하다
원본 파일에 diff를 적용할 때 차이점이 보이지 않습니다 cp new.sas orig_v2.sas
.
나는 당신이 이미 이것에 대해 생각했다고 생각합니다: 두 가지 alpha
N과 bravo
N
diff -e alpha1.sas alpha2.sas > change12.txt
(cat change12.txt
echo w bravo2.sas
echo q ) | ed bravo.sas
bravo
N 에 대한 N개의 변경 사항이 보고됩니다 .alpha