以下に示すように、複数のRHEL kickstartファイルが含まれています。%リリース...%終了さまざまなセクションの間には多くのPythonコード行があります。
%post
.....
.....
%end
%post
.....
.....
%end
%post
.....
.....
%end
2番目の検索パターンが表示される前に、一部のデータを含む新しい行を挿入しようとします(上記)。%終了「終わりから始めます(EOF)。すべてのヒント/入力に感謝します。
答え1
spam
2番目のブロックの最後の位置にテキストを挿入する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