我正在尝试使用 sed 在范围末尾添加一个字符串。
$ cat test.fl
TITLE OF FILE
first 1
second 2
third 3
fourth 4
fifth 5
sixth 6
seventh 7
eighth 8
ninth 9
first 1.1
second 1.2
third 1.3
fourth 1.4
fifth 1.5
sixth 1.6
seventh 1.7
eighth 1.8
ninth 1.9
我需要在范围末尾添加一行。让范围受到单词
first
和数字的限制,那么我想得到类似的东西:
TITLE OF FILE
first 1
second 2
third 3
fourth 4
fifth 5
sixth 6
seventh 7
eighth 8
ninth 9
zero 0
first 1.1
second 1.2
third 1.3
fourth 1.4
fifth 1.5
sixth 1.6
seventh 1.7
eighth 1.8
ninth 1.9
我尝试使用这样的结构
sed -e "/^first.*1$/,/^first.*/ { /^first.*1$/! {/^first.*/izero 0" -e "}}" ./test.fl
/^first.*1$/,/^first.*/
- 范围从 first 1 到 first 1.1;{ /^first.*1$/!
- 不申请起始范围线;{/^first.*/izero 0\n" -e "}
- 在第一个 1.1 行“零 0”之前添加
但不为我工作。当然,添加的行中将使用变量。实验表明,有范围下限还是文件结尾还是有区别的。我希望能够在这两种情况下添加一个字符串。我尝试的越多,我就越困惑。
sed ':a;/first/{:b;n;//!bb;s/.*/zero 0\n\n&/;ba}' file
找到包含 first
的行,打印并获取下一行。重复直到另一行包含
first
,然后使用替换,插入一行
zero 0
和一个空行。重复。