shell脚本中双引号内的单引号

时间:2012-11-19 11:36:31

标签: shell sed quotes

我需要使用"'a"之类的字符串替换像'a这样的文件字符串。 在实践中,我需要删除双引号。

我当时想用sed来做,但是我现在找不到解决方案:我猜我因为引号而犯了一些语法错误。

3 个答案:

答案 0 :(得分:2)

如果您只需要从文件中删除所有双引号字符,则可以tr使用-d选项:

$ cat test.txt
this is a test "'a"
something "else"
doesn't touch single 'quotes'

$ cat test.txt | tr -d '"'
this is a test 'a
something else
doesn't touch single 'quotes'

<强>更新

如果您想将"'a"的特定实例替换为'a,那么您可以使用sed

sed "s|\"'a\"|'a|g" test.txt
this is a test 'a
something "else"
doesn't touch single 'quotes'

但是,我怀疑你是在追求更为通用的东西,而不仅仅是替换a字符周围的引号。此sed命令会将"'anything"的任何实例替换为'anyhting

sed "s|\"'\([^\"]\+\)\"|'\\1|g" test.txt
this is a test 'a
something "else"
doesn't touch single 'quotes'

答案 1 :(得分:0)

这似乎对我有用

echo '"a"' | sed "s/\"a\"/\'a/"

答案 2 :(得分:0)

你可以使用:

perl -pe 's/\042//g' your_file

042是双引号的八进制值。

测试如下:

> cat temp
"'a"
> cat temp | perl -pe 's/\042//g'
'a
>