在文本文件中,我需要删除非转义字符,如下例所示
"\\s" -> "\s"
"\s" -> ""
我需要使用 sed 进行此练习。我做了这个命令:
s/\([^\]\)\\s/\1/g
s/\\\\/\\/g
我现在遇到的问题是,一行开头的\s
未被移除。什么可以添加到正则表达式来实现这一点。我还尝试了*
和?
,但问题是它们也删除了\\s
字符串。
所以我真的需要一种方法来匹配'不是反斜杠或行开头'。
答案 0 :(得分:0)
这可能对您有用:
echo '\s xxxxx \\s yyyyy \s zzzzz \\s \\s end' |
sed 's/\\s/\n/g;s/\\\n/\\s/g;s/\n//g'
xxxxx \s yyyyy zzzzz \s \s end
三个步骤:
\s
更改为\n
\\n
更改为\s
\n
,即原始\s
的 N.B。我使用\n
因为它不能出现在原始行中,因为sed将其用作行分隔符。