2012-07-01 162 views
0

我有一些HTML文件,并希望与包含这些代码只提取线:奇怪的输出sed的

head 
p 

我用sed将提取的文件的这些部分,具体如下:

grep "<head>" myfile.html | sed -e 's%\(head\)\(.*\)\(/head\)%title\2\/title%' 

grep "<p>" myfile.html | sed -e 's%\(<p>\)\(.*\)\(</p\)\(>\)%\2\\%' 

一切正常,但我在每行的末尾都会得到“\”字符。我如何克服这个问题?

回答

1

不要在替换字符串的末尾使用\:

grep "<p>" myfile.html | sed -e 's%\(<p>\)\(.*\)\(</p\)\(>\)%\2%' 
2

在此命令,你告诉它由包括双反斜线添加一个反斜杠:

sed -e 's%\(<p>\)\(.*\)\(</p\)\(>\)%\2\\%' 

尝试删除反斜杠:

sed -e 's%\(<p>\)\(.*\)\(</p\)\(>\)%\2%' 

而且,你不需要grep

sed -ne '/<p>/{s%\(<p>\)\(.*\)\(</p\)\(>\)%\2%;p}'