我有带有一些美元符号 ( ) 的文件 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 £