我有一个 RHEL kickstart 文件,如下所示,其中包含多个%发布...%结束其中的各个部分之间有许多行 Python 代码。
%post
.....
.....
%end
%post
.....
.....
%end
%post
.....
.....
%end
我正在尝试在搜索模式第二次出现之前(上方)插入包含一些数据的新行“%结尾“从最后(EOF)开始。任何提示/输入都非常感激。
答案1
spam
在倒数第二个块的最后一个位置插入文本的 Python 代码片段%post..%end
:
with open('input') as fp:
lines = fp.readlines()
locs = [i for i, val in enumerate(lines) if val == '%end\n']
lines.insert(locs[-2], 'spam' + '\n')
with open('input', 'w') as fp:
fp.write(''.join(lines))
答案2
插入“一些数据”在最后一条图案线之前。
grep
+awk
解决方案:
awk -v n="$(($(grep -c '^%end' inputfile) - 1))" \
'/^%end/{ if (++cnt == n) print "some data" }1' inputfile
输出:
%post
.....
.....
%end
%post
.....
.....
some data
%end
%post
.....
.....
%end