2016-06-08 83 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。

相關問題