sed를 사용하여 줄 끝에 문자열 추가

sed를 사용하여 줄 끝에 문자열 추가

파일의 모든 줄 끝에 다음 문자열을 추가하고 싶습니다. 웹에서 검색해 보았으나 관련 내용을 찾을 수 없었습니다. 나는 또한 다음 명령을 사용했습니다

sed -i -e "s?$?\$dest \$port \$fgt --pin '\$limit' --nogui;"? ipv42

누구든지 나를 도와줄 수 있습니까? 파일의 모든 줄 끝에 다음 문자열을 추가하고 싶습니다.

$dest $port $fgt --pin '\$limit' --nogui;

답변1

한 가지 방법은 heredoc, 백슬래시를 사용하여 변수 확장을 억제하는 것입니다. 우리가 하고 있는 일은 완전히 인용된 문자열(여러 줄) heredoc을 제공하는 것입니다.

sed -f - <<\_SED_ inputfile 
s?$?$dest $port $fgt --pin '$limit' --nogui;?
_SED_

답변2

sed 스크립트는 다음을 제외하고 거의 작동합니다.

  1. s 명령의 마지막 구분 기호 ?는 따옴표로 묶어야 합니다.
  2. $쉘은 검색 부분을 $?실행된 마지막 명령의 종료 상태로 해석하므로 검색 부분을 이스케이프 해야 합니다 .

올바른 명령:

sed -i -e "s?\$?\$dest \$port \$fgt --pin '\$limit' --nogui;?" ipv42

관련 정보