![Sed는 패턴과 파일 끝 사이에서 패턴을 바꿉니다.](https://linux55.com/image/143417/Sed%EB%8A%94%20%ED%8C%A8%ED%84%B4%EA%B3%BC%20%ED%8C%8C%EC%9D%BC%20%EB%81%9D%20%EC%82%AC%EC%9D%B4%EC%97%90%EC%84%9C%20%ED%8C%A8%ED%84%B4%EC%9D%84%20%EB%B0%94%EA%BF%89%EB%8B%88%EB%8B%A4..png)
~에서SED: 마지막 줄 뒤에 텍스트를 삽입하시겠습니까? - Unix 및 Linux 스택 교환$
, sed 외부에서 사용하면 교체가 파일의 끝을 나타낸다는 것을 배웠습니다 . 파일 끝 abc
전후에 발생하는 모든 이벤트를 대체하기 위해 아래에서 이것을 사용해 보았습니다.# Start
123
암호:
file=Data.txt
Initial="# Start";
Final='\$'
orig="abc";
new="123";
sed -i -r -e "\!${Initial}!,\!${Final}!{s!${orig}!${new}!g}" ${file} ;
데이터.txt
# Start
abc
abc
$
abc
abc
산출:
# Start
123
123
$
abc
abc
예상 출력:
# Start
123
123
$
123
123
내가 무엇을 놓치고 있나요?$
즉, 이것이 파일 끝을 의미한다고 sed에게 어떻게 알릴 수 있습니까 ?
$
참고: 더 안전한 변수 확장을 위해 sed 표현식에 큰따옴표를 사용하고 있기 때문에 이스케이프합니다 . 이것이 맞기를 바랍니다. 이에 대해 논평해주실 수 있나요?
답변1
이것은 작동합니다: (참고: ${Final}
대신 /${Final}/
)
file=Data.txt
Initial="# Start";
orig="abc";
new="123";
Final='$' # Line Number
sed -r -e "/${Initial}/,${Final}s/${orig}/${new}/g" ${file}