UNIX Sed命令替换双引号" 2单引号''

时间:2016-03-10 06:16:50

标签: shell unix sed tr

我的档案有这样的记录

 Nitin "Nick" Patel

我想用双引号替换双引号:

 Nitin ''Nick'' Patel

我尝试了命令

sed -i "s/\Nitin "Nick" Patel/Nitin ''Nick''Patel/g" test1.csv

但不幸的是它并没有取代任何东西。 请指教。

3 个答案:

答案 0 :(得分:2)

sed "s/\"/''/g" File
Nitin ''Nick'' Patel

或(根据具体要求,前一个会将所有"替换为2 '):

sed "s/Nitin \"Nick\" Patel/Nitin ''Nick'' Patel/g" File
Nitin ''Nick'' Patel

答案 1 :(得分:0)

在命令行上混合单引号和双引号需要小心。这可能就是你被要求这样做的原因。使用命令行:

sed -i "s/\Nitin "Nick" Patel/Nitin ''Nick''Patel/g" test1.csv

shell实际上删除了嵌入的双引号(实际上sed没有看到任何双引号) - 就像你写的那样:

sed -i "s/\Nitin Nick Patel/Nitin ''Nick''Patel/g" test1.csv

我不确定为什么你在搜索字符串的Nitin的N之前加上反斜杠。

有多种方法可以进行必要的替换,包括:

sed -i.bak "s/Nitin \"Nick\" Patel/Nitin ''Nick'' Patel/g" test1.csv

sed -i.bak 's/Nitin "Nick" Patel/Nitin '\'\''Nick'\'\'' Patel/g' test1.csv

sed -i.bak -f script.sed test1.csv

script.sed包含:

s/Nitin "Nick" Patel/Nitin ''Nick'' Patel/g

答案 2 :(得分:0)

有人可能会尝试:

sed -i "s/\x22/\x27\x27/g" test1.csv