正则表达式:不是反斜杠或行开头

时间:2012-03-12 17:50:22

标签: regex sed

在文本文件中,我需要删除非转义字符,如下例所示

"\\s" -> "\s"
"\s" -> ""

我需要使用 sed 进行此练习。我做了这个命令:

s/\([^\]\)\\s/\1/g
s/\\\\/\\/g

我现在遇到的问题是,一行开头的\s未被移除。什么可以添加到正则表达式来实现这一点。我还尝试了*?,但问题是它们也删除了\\s字符串。

所以我真的需要一种方法来匹配'不是反斜杠或行开头'。

1 个答案:

答案 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

三个步骤:

  1. \s更改为\n
  2. \\n更改为\s
  3. 删除\n,即原始\s
  4. N.B。我使用\n因为它不能出现在原始行中,因为sed将其用作行分隔符。