我有一个像这样的文件:
'AAA' 'a\\\\b\\\\a\\'
'BBB' 'q\\l\\s\\'
...
我想用
\\\\
替换所有出现的\\
。我尝试了这个sed命令:
sed 's/\\//g'
但这会删除所有
\
。这是我的输出:
'AAA' 'aba'
'BBB' 'qls'
我想要的输出:
'AAA' 'a\\b\\a\\'
'BBB' 'q\\l\\s\\'
...
最佳答案
用2个反斜杠替换4个反斜杠的序列:
sed 's/\\\\\\\\/\\\\/g' input.txt
或者,使用
{4}
指示匹配多少个\
:sed 's/\\\{4\}/\\\\/g' input.txt
input.txt
'AAA' 'a\\\\b\\\\a\\'
'BBB' 'q\\l\\s\\'
输出
'AAA' 'a\\b\\a\\'
'BBB' 'q\\l\\s\\'
您必须将特殊的正则表达式字符(如
\
)转义为另一个\
。{
和}
也是正则表达式字符,但是默认情况下,类似ed的工具(ed,vim,sed等)无法识别它们。要使用大括号指定正则表达式计数(例如{4}
),sed要求您转义它们(例如\{4\}
)所以...
\
可以直接使用它;不作为正则表达式字符{
和}
以将它们用作正则表达式字符,而不是文字括号