2

我需要将文件中的字符串替换"'a"'a. 在实践中,我需要删除双引号。

我正在考虑使用 sed 来执行此操作,但直到现在我才找到解决方案:我想我因为引号而犯了一些语法错误。

4

4 回答 4

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"with的任何实例'anyhting

sed "s|\"'\([^\"]\+\)\"|'\\1|g" test.txt
this is a test 'a
something "else"
doesn't touch single 'quotes'
于 2012-11-19T11:41:32.743 回答
0

这似乎对我有用

echo '"a"' | sed "s/\"a\"/\'a/"
于 2012-11-19T11:48:18.317 回答
0

这可能对您有用(GNU sed):

sed 's/"\('\''[^"]*\)"/\1/g' file
于 2012-11-19T11:50:36.747 回答
0

你可以使用:

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

042 是双引号的八进制值。

测试如下:

> cat temp
"'a"
> cat temp | perl -pe 's/\042//g'
'a
> 
于 2012-11-19T12:55:50.020 回答