如何在文件的特定空白行中插入文本(bash)

时间:2018-07-18 10:37:21

标签: bash awk

这是我的文件的示例:

AAAA
BBBB
CCCC

[section 1]
DDDD
EEEE

[section 2]
FFFF
GGGG

[section 3]
IIII

我需要在第3节之后的行中插入A)第XXXX行作为最后一行,B)在第3行之后的行YYYY中插入行(但是要创建一个全新的行,因此第2部分和第3部分始终以空行分隔)。这将是预期的结果:

AAAA
BBBB
CCCC

[section 1]
DDDD
EEEE
XXXX

[section 2]
FFFF
GGGG

YYYY
[section 3]
IIII

可以使用sed在bash文件中完成吗?

1 个答案:

答案 0 :(得分:0)

使用awksed容易。使用awk,您可以使用空白的RS

awk -v ORS='\n\n' -v RS= '/\[section 1]/{$0 = $0 "\nXXXX"}
 /\[section 3]/{$0 = "YYYY\n" $0} 1' file

AAAA
BBBB
CCCC

[section 1]
DDDD
EEEE
XXXX

[section 2]
FFFF
GGGG

YYYY
[section 3]
IIII

Working Demo