변수를 사용하여 Linux에서 특수 문자를 변경하는 방법

변수를 사용하여 Linux에서 특수 문자를 변경하는 방법

특정 파일에서 이 명령을 사용하고 있는데 sed작동하지 않습니다.

예를 들어

a="adsfkndsa%/{}==admfkdsa"  
b=sadkfjdsaklfj  

sed -i -e 's/$a/$b/g' /tmp/sample.txt

다른 방법을 제안해주세요.

답변1

방금 이것을 시도했는데 내 시스템(Debian 8)에서 작동합니다.

sed -i.bak "s|$a|$b|g" /tmp/sample.txt

변수에 가 $a포함되어 있으므로 구분 기호를 변경해야 합니다 /.

앞으로:

cat /tmp/sample.txt.bak 
foo
adsfkndsa%/{}==admfkdsa
bar

뒤쪽에:

cat /tmp/sample.txt
foo
sadkfjdsaklfj
bar

편집, sed 버전 정보:

sed --version
sed (GNU sed) 4.2.2

관련 정보