SED:在范围的末尾附加一行

时间:2016-12-01 23:59:04

标签: bash sed

我希望在文件中的范围结束之前添加一些行。

sed '/BEGIN/,/END/ /$/i \ SOME TEXT TO ADD' /path/to/foo

  • 原始档案: random text BEGIN foo bar END random text
  • SED后的预期行为: random text BEGIN foo bar SOME TEXT TO ADD END random text

关于如何实现这一目标的任何想法?

2 个答案:

答案 0 :(得分:1)

这可能适合你(GNU sed):

sed '/BEGIN/,/END/!b;/END/iSOME TEXT TO ADD' file

如果BEGINEND之间的行不正常打印,否则如果该行包含END插入一些文字。

答案 1 :(得分:0)

为什么不直接查找结束标记,然后插入:

sed '/END/ iSOME TEXT TO ADD' /path/to/foo

否则你必须使用几行:

sed '/BEGIN/,/END/ {
    /END/ iSOME TEXT TO ADD
    }' /path/to/foo