替换文本文件中的行(持续)bash

时间:2015-06-18 16:32:54

标签: bash sed

我在textfile中有以下几行(最后3行):

         } 
    } 
  }

我想做的是做这样的事情:

         } 
     } 
blablabla
blablabla
blablabla
  }

有没有办法用sed或任何其他命令来执行此操作而不输入特定的行号?

2 个答案:

答案 0 :(得分:5)

使用GNU sed

sed -i '$i blablabla\nblablabla\nblablabla' file

$匹配最后一行,但我是插入,它将文本置于匹配行

之前

使用-i选项sed来执行就地操作,在这种情况下修改其文件信息。

答案 1 :(得分:4)

由于它几乎是最后一行,你可以使用awk寻求解决方案:

awk '{ print p; p = $0 }END{ print "blablabla\nblablabla\nblablabla"; print p }' file

这将缓冲变量p中的每一行,打印前一行。在文件的末尾,在打印最后一行之前打印要插入的行。

像往常一样,要将输出重定向到文件,请使用重定向并执行"就地"编辑,使用临时文件:

for file in *; do
    awk '...' "$file" > tmp && mv tmp "$file"
done