我有这样的文件:
'AAA' 'a\\\\b\\\\a\\' 'BBB' 'q\\l\\s\\' ...
我想用\\
来replace所有出现的\\\\
。
我试过这个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\}
)
所以…
\
从字面上使用它; 不是一个正则表达式 {
和}
将它们用作正则表达式字符而不是文字大括号 使用任何支持ERE的sed,例如GNU或AIX seds:
$ sed -E 's/(\\){4}/\\\\/' file 'AAA' 'a\\b\\\\a\\' 'BBB' 'q\\l\\s\\'
我想将所有'\\\\'替换为'\\'
使用以下方法:
sed 's/\\\\\\\\/\\\\/g' file
输出:
'AAA' 'a\\b\\a\\' 'BBB' 'q\\l\\s\\'
每个反斜杠\
应该用…反斜线:)