来自sed的奇怪输出

时间:2012-07-01 17:42:06

标签: linux bash sed

我有一些html文件,并且只想提取包含这些标记的行:

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\\%'

一切都很好,但我在每一行的末尾都有“\”字符。我怎么能克服这个问题?

2 个答案:

答案 0 :(得分:2)

在这个命令中,你告诉它通过包含双反斜杠来添加反斜杠:

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

尝试删除反斜杠:

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

此外,您不需要grep

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

答案 1 :(得分:1)

请勿在替换字符串末尾使用\:

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