使用sed,在特定行的前面插入一个单词

时间:2015-01-22 03:01:51

标签: bash sed

我试过用这个;

sed -e 's/    /Close,/g' /home/user/Desktop/original.txt > /home/user/Desktop/updated.txt

,文件如下:

SYMBOL
      16.00 Low,15.85 
      16.91

我想要达到的目的是在16.00前面的第2行插入一个单词。

我一直在努力想让它插入我的大脑,我的尝试都不是很平坦,任何帮助都会受到赞赏。

2 个答案:

答案 0 :(得分:1)

这取决于您要匹配的“特定行”。如果是那条确切的行:

sed -r 's/^\s*16.00/Close,16.00/' /home/user/Desktop/original.txt > /home/user/Desktop/updated.txt

如果它更通用一些,可能:

sed -r 's/^\s*(\d\d\.\d\d\s+Low)/Close,\1/' /home/user/Desktop/original.txt > /home/user/Desktop/updated.txt

答案 1 :(得分:0)

sed 's/^[[:space:]]\{1,\}16/Close,16/' /home/user/Desktop/original.txt > /home/user/Desktop/updated.txt

g正在改变当前工作内容的几种情况,但默认情况下,sed一次处理1行。在这种情况下,g是无用的,因为每行只有一个最大变化。此外,^是每一行的开头,而不仅仅是所有行中的第一行。