2012-03-12 103 views
1

在一个文本文件,我需要在下面的例子中正则表达式:不是一个反斜杠或行启动

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

我需要使用sed的对于本练习中,除去像非转义字符。我做了这个命令:

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

我现在碰到的问题是,\s在一行的开头不被删除的事实。什么可以添加到正则表达式来实现这一点。我也试过*?但这些问题是他们也删除\\s字符串。

所以我真的需要一种方法来匹配“不是一个反斜杠或线开始”。

回答

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

注:我使用\n,因为它不能出现在原始行中,因为sed将它用作行分隔符。

相关问题