假设我有一个文件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 脚本来实现这一点?
提前感谢您的帮助。
对于要在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 命令可能看起来很丑陋。