例如我想改变
"'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
输出:
'本文' “那个文字” '其他文本'
答案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'