假设我有一个文件iptables_manager.py并希望在特定行之后插入一行。
输入:
tables['filter'].add_chain('local')
tables['filter'].add_rule('neutron-filter-top', '-j $local',
wrap=False)
builtin_chains = {4: {'filter': ['INPUT', 'OUTPUT', 'FORWARD']},
6: {'filter': ['INPUT', 'OUTPUT', 'FORWARD']}}
输出:
tables['filter'].add_chain('local')
tables['filter'].add_rule('neutron-filter-top', '-j $local',
wrap=False)
tables['filter'].add_rule('FORWARD', '-p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1360',
wrap=False, top=True)
builtin_chains = {4: {'filter': ['INPUT', 'OUTPUT', 'FORWARD']},
6: {'filter': ['INPUT', 'OUTPUT', 'FORWARD']}}
有没有一种简单的方法可以使用bash脚本来实现这一目标?
提前感谢您的帮助。
答案 0 :(得分:0)
对于您希望在wrap=False
之后插入多行的特定情况,您可以使用sed r
ead,它将在匹配的行之后读取文件(包括):
sed '/wrap=False/r new_lines.txt' input.txt > output.txt
备选方案,您可以使用a
fter命令,该命令将在匹配的行后插入指定的文本:
sed '/wrap=False/a \ tables['\''filter'\''].add_rule('\''FORWARD'\'', '\''-p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1360'\'',\n wrap=False, top=True)\n' input.txt > output.txt
两者都应该这样做,但正如你所看到的那样a
fter命令看起来很难看。