Sed匹配后添加文本

时间:2015-09-15 03:38:37

标签: sed

我有一个xmltv文件,其中包含以下用于程序启动/停止时间的样式行

<programme start="20150914003000" stop="20150914020000" channel="Noor TV">

我想在开始/停止时间结束时添加+0000,如下所示

<programme start="20150914003000 +0000" stop="20150914020000 +0000" channel="Noor TV">

我正在使用Windows sed并且到目前为止

sed -r "/<programme start=\"/ s/^([0-9]{14})/\1 +0000/g" < "xml.xml" > "xml2.xml"

它给了我sed不能读&gt;:无效的参数 在dos窗口中,我可以看到它添加+0000但不写新文件 我知道它有些愚蠢,但我无法弄明白。 THKS。

3 个答案:

答案 0 :(得分:0)

试试这个

sed -r "/<programme start=/ s/^([0-9]{14})/\1 +0000/g" "xml.xml" > "xml2.xml"

或(posix版)

sed "/<programme start=/ s/^([0-9]\{14\})/\1 +0000/g" "xml.xml" > "xml2.xml"

答案 1 :(得分:0)

$cat xml.xml
<programme start="20150914003000" stop="20150914020000" channel="Noor TV">
$sed -r 's/start="([0-9]{14})" stop="([0-9]{14})"/start="\1 +0000" stop="\2 +0000"/' xml.xml >xml2.xml
$cat xml2.xml
<programme start="20150914003000 +0000" stop="20150914020000 +0000" channel="Noor TV">

通过在线linux尝试过它

答案 2 :(得分:-1)

第一个&lt;需要反斜杠,而不是正斜杠。

sed -r "\<programme start=\"/ s/^([0-9]{14})/\1 +0000/g" < "xml.xml" > "xml2.xml"