如何使用Bash(sed或任何其他)命令在EOF-nth行插入

时间:2014-07-27 15:32:58

标签: linux bash unix awk sed

我在Stack Overflow中搜索过,但是,我无法找到解决方案。试了一下。

我有一个包含这样的代码的文件 -

...
{
...

 void abc()
 {
  if(condition)
  {
   x=y;
   z=0;
  }
 }
} //EOF

我想在x=y;z=0;之间插入一些代码行。

这可以通过2种方法完成 -

  1. 搜索模式x=y;并稍后插入
  2. 发现没有。文件中的行 -

    NUMOFLINES = $(wc -l some.txt | awk' {print $ 1}') TOINSERTLINE = NUM​​OFLINES-5

  3. 所以,插入TOINSERTLINE的值。

    欢迎使用更优化的方法。 帮帮我解决这个问题。


    结论答案 -

      

    sed -i.bak -e' ^ / x = y; / r file-to-insert' *的.xaml

    这对我有用!!

    感谢 Jonathan Leffler anubhava 。这些是我最想要的。

3 个答案:

答案 0 :(得分:0)

如果您想在第5行之后插入一行,请使用此sed

sed -i.bak $TOINSERTLINE'r data-file' file

此处要插入的数据来自data-file

答案 1 :(得分:0)

这是一种方式:

(
    sed '/x=y;/q'
    echo "NUMOFLINES - 5"
    cat
) < file

答案 2 :(得分:0)

awk '1; /x=y/{print "foo"}' file

awk -v nl=$(wc -l < file) '1; NR==(nl-5){ print "foo" }' file

如果那些不符合您的要求,请编辑您的问题以澄清您的要求。

相关问题