删除除换行符之外的所有反斜杠

时间:2013-06-12 12:38:34

标签: regex perl sed awk

我想删除所有\,除非它是\ n

some \'Text\'\nA new line

应该成为

some 'Text'\nA new line

4 个答案:

答案 0 :(得分:3)

sed "s/\\'/'/g"

some 'Text'\nA new line

答案 1 :(得分:2)

这可以解决问题:

$ echo "some \'Text\'\nA new line" | sed 's/\\\([^n]\)/\1/g'
some 'Text'\nA new line

也就是说,它取代\以及之后没有n\([^n]\)\之后捕获角色,以便我们可以将其打印回来。这就是我们在制作代码时所做的事情:打印\1,指的是\之后的字符。

为了避免这么多斜杠,它也可以用作:

$ echo "some \'Text\'\nA new line" | sed 's:\\\([^n]\):\1:g'
some 'Text'\nA new line

答案 2 :(得分:1)

怎么样:

echo "some \'Text\'\nA new line" | sed 's,\\[^n],,g'

使用perl

echo "some \'Text\'\nA new line" | perl -pe 's,\\(?!n),,g'

答案 3 :(得分:1)

如果字符不是n,请记住反斜杠后面的字符,替换:

sed -e 's/\\\([^n]\)/\1/g'

您没有指定如何处理行末尾的反斜杠。如果你想删除它们,你必须添加

-e 's/\\$//'
相关问题