替换为SED,尝试附加内容不起作用

时间:2010-07-27 15:04:17

标签: regex sed

我正在尝试使用sed修复文件,但我无法解决我做错的事情。关于为什么sed没有按照我的预期行事的任何指示都会受到赞赏。

我的文件由一堆行组成,每行包含一个值。值的内容与替换无关,除了它们始终是字母数字并遵循模式。我想在这些值前添加并附加其他数据,以便创建CSV文件。

在预先设定时,sed的表现令人钦佩:

前置(有效)

sed 's/\(.*\)/NULL;0;400;6;2010-07-27;\1/' selection.csv

导致:

NULL;0;400;6;2010-07-27;1326GP11SCH
NULL;0;400;6;2010-07-27;2312BB30DUM

这与我希望的完全一样。

追加(失败)

然而,在追加时,事情变得丑陋:

sed 's/\(.*\)/\1 ;NULL;NULL;1/' selection.csv

导致:

 ;NULL;NULL;1
2312BB30DUM ;NULL;NULL;1

除了最后一行之外,所有被替换的值都会消失,这非常令人沮丧。

这一定是显而易见的,我在这里做错了,但无法理解。

(注意:不确定这是SO还是SU材料......如果可以,请随意将其移至SuperUser,并相信它应该在那里)

1 个答案:

答案 0 :(得分:2)

首先在文件上执行dos2unix,然后使用sed

$ dos2unix file
$ sed 's/$/;NULL;NULL;1/' file