如何在sed中正确使用引号?

如何在sed中正确使用引号?

例如我想改变

"'this text'"
"that text"
'other_text'

进入

'this text'
"that text"
'other_text'

我试过

sed -e 's/^"\'/"/g'

但我的引用一定是错误的。

乌班图。

答案1

使用 GNU sed:

sed 's|\x22\x27|\x27|;s|\x27\x22|\x27|' file

输出:

'本文'
“那个文字”
'其他文本'

看:http://www.asciitable.com/

答案2

您不能在引用\中使用转义''。因此,将所有内容放在""引号中并转义""s/^\"'/'/g"

或者结束''报价,执行 a ,然后再次\'开始报价,例如'''s/^"'\''/'\''/g'

\另外,如果您很容易被s 和s混淆/,请注意您不必使用/s 作为分隔符。您可以使用任何字符,例如"s%^\"'%'%g"


这只在行首引用第一个引号,您似乎正在努力解决这个问题。

答案3

试试这条线

sed -e "s/^\"'/\'/g" -e "s/'\"$/\'/g" file

不要将sed表达式括在 之间' ',而是在之间进行,这样您" "就可以使用\" "

例如

@tachomi:~$ echo "\"'this text'\""
"'this text'"
@tachomi:~$ echo "\"'this text'\"" | sed -e "s/^\"'/\'/g" -e "s/'\"$/\'/g" 
'this text'

例如2

@tachomi:~$ cat file.txt
"'this text'"
"that text"
'other_text'
@tachomi:~$  sed -e "s/^\"'/\'/g" -e "s/'\"$/\'/g" file.txt
'this text'
"that text"
'other_text'

相关内容