2013-06-12 104 views

回答

1

記住反斜槓,如果後面的字符它不是n,取而代之:

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

您沒有在行尾指定如何處理反斜槓。如果你想刪除它們,也必須添加

-e 's/\\$//' 
2

這可以使的伎倆:

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

也就是說,它取代了\以及之後沒有n\([^n]\)捕獲\後的字符,以便我們可以打印回來。這就是我們在進行排版時所做的事情:print \1,指的是\之後的字符。

爲了避免這麼多的斜線,它也可以把爲:

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

我們已同步,@Jaypal :) – fedorqui

+0

如果它不是n,則會刪除反斜槓後面的字符。與我的例子相關的「撇號」周圍的撇號丟失 – tmanthey

+0

解決,@tmanthey,現在我趕上字符,並打印回 – fedorqui

1

如何:

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

隨着perl

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

在你的sed行括號丟失:'sed's,\\\([^ n] \ ),\ 1,g''。這與[this](http://stackoverflow.com/a/17065825/2468910)(接受的答案)相同。 – captcha

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

some 'Text'\nA new line