2016-06-08 61 views
0

假设我有一个文件iptables_manager.py并且想要在特定行之后插入一行。在使用bash的特定行之后插入新行

输入:

 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

当然,看看这个答案http://stackoverflow.com/questions/15559359/insert-line-after-first-match-using-sed确保逃脱qoutation标记。 – dood

回答

0

针对您的特殊情况下要插入乘行wrap=False后就可以用了sed r EAD将读取文件(包括)匹配的行之后:

sed '/wrap=False/r new_lines.txt' input.txt > output.txt 

替代你可以使用a压脚提升命令将匹配的行后面插入指定的文本:

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压脚提升命令是非常难看的看着G。

相关问题