Sed는 패턴과 파일 끝 사이에서 패턴을 바꿉니다.

Sed는 패턴과 파일 끝 사이에서 패턴을 바꿉니다.

~에서SED: 마지막 줄 뒤에 텍스트를 삽입하시겠습니까? - Unix 및 Linux 스택 교환$, sed 외부에서 사용하면 교체가 파일의 끝을 나타낸다는 것을 배웠습니다 . 파일 끝 abc전후에 발생하는 모든 이벤트를 대체하기 위해 아래에서 이것을 사용해 보았습니다.# Start123

암호:

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} 

관련 정보