使用sed在文件中的数字后面附加一个字符串

时间:2014-05-19 09:37:57

标签: bash sed

我有一个包含以下行的文件:

John
Some String 1234
Mary
another string 3445
Tom
Cat Dog 2367

即。每个备用行以数字结尾,其他地方没有数字。 我想添加< / BR>在数字后面标记,以便输出如下:

John
Some String 1234</br>
Mary
another string 3445</br>
...

我尝试使用sed命令:

 sed -i 's/[0-9]+/1<\/br>/'  filename.html

但错误了。 我该如何完成这项工作?

5 个答案:

答案 0 :(得分:3)

您可以使用:

sed -i.bak 's~[0-9]\+$~&</br>~' file

现在文件内容将是:

cat file

John
Some String 1234</br>
Mary
another string 3445</br>
Tom
Cat Dog 2367</br>

答案 1 :(得分:2)

使用这个:

sed 's/\([0-9]\+\)$/\1<br\/>/' your.txt

简短说明:

[0-9]\+行中具有不同长度$的数字会匹配到匹配组\( ... \)中。它将替换为匹配组\1加上<br\/>标记的值。不要错过我用反斜杠\转义了几个字符,因为它们在模式中有特殊含义。

答案 2 :(得分:2)

试试这个:

sed -ri.bak '/[0-9]+$/ s/$/<\/br>/g' filename.html

答案 3 :(得分:0)

知道了,我在匹配的模式周围缺少()

所以它就像:

sed -i 's/\([0-9][0-9]*\)/\L\1<\/br>/I'  filename.html

答案 4 :(得分:0)

由于数字始终位于偶数行的末尾,因此 GNU sed的扩展范围地址就足够了:

sed -i.bak '2~2s#$#</br>#' file

输出:

John
Some String 1234</br>
Mary
another string 3445</br>
Tom
Cat Dog 2367</br>