我有帶有一些美元符號 ( ) 的文件 test_output_archive.svd $
。我使用 cat 命令生成了一個 shell 腳本 Replace_dollar_pound.sh,以將美元符號替換為英鎊 ( £
) 腳本在 Solaris 10 上運行,美元按預期被替換。在 Solaris 11 中,但美元沒有被替換,也沒有拋出任何錯誤
test_output_archive.svd 的內容: 線路租金 9 美元 OOB 僅售 10 美元
在第 1 步將美元符號替換為英鎊,在第 2 步刪除垃圾字符,在第 3 步刪除臨時文件,在第 4 步重命名**
Replace_dollar_pound.sh 的內容: 貓測試輸出存檔.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
在正規表示式中具有$
特殊意義,它的意思是「記錄的結尾」(大多數情況下是record==line)。所以,你需要逃避它。嘗試這個:
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 £