$를 £로 바꾸려면 cat 명령을 사용하십시오.

$를 £로 바꾸려면 cat 명령을 사용하십시오.

달러 기호()가 포함된 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 £

답변3

sed설명된 대로 문자열의 각 항목을 바꿀 수 있습니다.여기:

sed -i 's/\£/\$/g' FILENAME

-i옵션은 sed파일에 대한 작업을 지시하고, s문자열을 대체하는 연산자이고, 대체해야 하는 문자열이며, \$각 문자를 대체할 문자열 $( \특수 문자이므로 이스케이프 기호)이며, g모든 인스턴스를 대체한다는 의미입니다.

편집하다:-i옵션은 Solaris에서는 작동하지 않습니다.이것해결책.

관련 정보