![$를 £로 바꾸려면 cat 명령을 사용하십시오.](https://linux55.com/image/38479/%24%EB%A5%BC%20%C2%A3%EB%A1%9C%20%EB%B0%94%EA%BE%B8%EB%A0%A4%EB%A9%B4%20cat%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%8B%AD%EC%8B%9C%EC%98%A4..png)
달러 기호()가 포함된 test_output_archive.svd 파일이 있습니다 $
. 달러 기호를 파운드( )로 바꾸는 cat 명령을 사용하여 쉘 스크립트인 Install_dollar_pound.sh를 생성했습니다 £
. 이 스크립트는 Solaris 10에서 실행되었으며 달러는 예상대로 바뀌었습니다. Solaris 11에서는 USD가 대체되지 않고 오류가 발생하지 않습니다.
test_output_archive.svd의 내용: 라인 대여 $9 OOB만 $10
1단계에서 달러 기호를 파운드로 바꾸고, 2단계에서 정크 문자를 제거하고, 3단계에서 임시 파일을 삭제하고, 4단계에서 이름을 바꿉니다**
Install_dollar_pound.sh의 내용: cat 테스트 출력 archive.svd | tr "\044" "\243" > temp_archive.svd cat temp_archive.svd | tr "\044" "\243" > temp_archive.svd tr -d "\302" > test_output_archive2.svd rm temp_archive.svd mv test_output_archive2.svd test_output_archive.svd
운영 체제를 Solaris 11로 업데이트할 때 수정이 필요합니까?
답변1
정규식에서 특별한 의미를 가지며 $
, 이는 "레코드 끝"(대부분의 경우 레코드==라인)을 의미합니다. 그러니 탈출해야 합니다. 이 시도:
sed 's/\$/£/g' file > outfile
답변2
sed 명령에서 특수 문자($)를 이스케이프할 수 있습니다.
$ cat test.txt
£ pound £
$ dollar $
£ pound £
$ dollar $
$ sed 's/\$/£/g' test.txt
£ pound £
£ dollar £
£ pound £
£ dollar £
아니면 할 수 있습니다
$ sed 's/[$]/£/g' test.txt
£ pound £
£ dollar £
£ pound £
£ dollar £