sip.conf ファイルまたはテキストベースのファイルの文字列 "nat=no" の前に行 "allow=alaw" を追加します。

sip.conf ファイルまたはテキストベースのファイルの文字列

sip.confファイルまたはテキストベースのファイルで、「nat = no」文字列の前に「allow = alaw」行を追加します。 "nat=no" 以前に "allow=alaw" が既に存在する場合は追加しないでください。

文書の内容:

secret =
nat = no
progressinband = yes

allow = ulaw
allow = alaw
nat = no
progressinband = yes

disallow = all
allow = ulaw
nat = no
progressinband = yes

私の試み:

awk '/nat = no/ { if(lastLine == "allow = alaw") { print } } { lastLine = $0 }' sip.conf

ベストアンサー1

awk -v add="allow = alaw" '/^nat = no$/&&lastLine!=add{print add}{lastLine=$0}1' sip.conf
  • -v add="allow = alaw"変数をaddawkに設定します。
  • /^nat = no$/&&lastLine!=add現在の行が正確に「nat = no」であることを確認し、最後の行が追加したい行でない場合は、「allow = alaw」を確認してください。もし本当なら、
    • {print add}追加する行を印刷します。
  • {lastLine=$0}現在の行値を保存し、次のループでのみ使用します。
  • 1現在の行を印刷します。

最小限の例は次のとおりですsip.conf

secret =
nat = no
progressinband = yes

allow = ulaw
allow = alaw
nat = no
progressinband = yes

disallow = all
allow = ulaw
nat = no
progressinband = yes
$ awk -v add="allow = alaw" '/^nat = no$/&&lastLine!=add{print add}{lastLine=$0}1' sip.conf > out
$ mv out sip.conf
$ cat sip.conf
secret =
allow = alaw
nat = no
progressinband = yes

allow = ulaw
allow = alaw
nat = no
progressinband = yes

disallow = all
allow = ulaw
allow = alaw
nat = no
progressinband = yes

おすすめ記事