我想用\\\\'
\'
所以像这样的文字:
ABC DEF \\\'S XYZ
会变成:
ABC DEF \'S XYZ
我尝试过使用sed
:
sed "s/\\\\\\\\\'/\\\\\'/g"
但它并没有取代任何东西。有什么想法吗?
答案 0 :(得分:3)
根据使用单引号或双引号,有不同的方法:
$ cat a
hello \\\\' aaa
afa
单引号 - 需要关闭并再次打开以插入单引号:
$ sed 's#\\\\\\\\'"'"'#X'"'"'#g' a
hello X' aaa
afa
双引号 - 每个\
需要转义三次:
$ sed "s#\\\\\\\\\\\\\\\'#\\\'#g" a
hello \' aaa
afa
好读:Remove backslashes from a text file
- 在shell (如
醇>bash
)中,您可以通过反斜杠转义反斜杠。因此,而不是\
写\\
。将字符串括在double之间 引号"
使反斜杠行为更多 复杂<1>但仍会产生双反斜杠 一个反斜杠。将字符串括在单引号'
之间 除了'
之外,每个字符都按字面意思处理。
答案 1 :(得分:1)
试试这个:
echo "ABC DEF \\\'S XYZ" | sed -r 's/\\+/\\/g'
输出:ABC DEF \'S XYZ
这里-r
的{{1}}切换用于扩展正则表达式。 sed
会在整个行中匹配一次或多次sed
(\
),并将匹配项替换为\\+
(\
)。
答案 2 :(得分:0)
这个有效:
echo ABC DEF \\\'S XYZ | sed -r 's/(.*)\\\\\\(.*)/\1 \\\2/g'