我只需要替换反斜杠的单个实例。
Input: \\apple\\\orange\banana\\\\grape\\\\\
Output: \\apple\\\orangebanana\\\\grape\\\\\
Tried using sed 's/\\//g' which is replacing all backslashes
注意:单个反斜杠的前一个字符可以是任何字符,包括字母数字或特殊字符。这是一个多行文本文件。
感谢您对此的帮助。
最佳答案
如果要考虑perl
然后向前看,而向前看正是您在这里需要的:
perl -pe 's~(?<!\\)\\(?!\\)~~g' file
\\apple\\\orangebanana\\\\grape\\\\\
详情
-
(?<!\\)
: 否定回顾以确保前一个字符不是\
-
\\
: 匹配\
-
(?!\\)
: 否定前瞻以确保下一个字符不是\
如果你想使用sed
只有这样我才建议:
sed -E -e ':a' -e 's~(^|[^\\])\\([^\\]|$)~\1\2~g; ta' g
关于regex - 使用 sed 仅替换字符的单个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68717117/