• 締切済み

sedによる書き換え。または別の方法

zabbixの設定ファイルを例にさせていただきます。 下の設定ファイルで、2箇所コマンドによる書き換えを実施したいと思います。 ・追記内容 7行目と、14行目に「priority=10」を追加。 いつもvimで、手書きしているのですが、 sedコマンドで追記できないでしょうか。 ご教授お願いします。 <設定ファイル> # vim /etc/yum.repos.d/zabbix.repo 1 :[zabbix] 2 :name=Zabbix Official Repository - $basearch 3 :baseurl=http://repo.zabbix.com/zabbix/2.2/rhel/6/$basearch/ 4 :enabled=1 5 :gpgcheck=1 6 :gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX 7 : 8 :[zabbix-non-supported] 9 :name=Zabbix Official Repository non-supported - $basearch 10:baseurl=http://repo.zabbix.com/non-supported/rhel/6/$basearch/ 11:enabled=1 12:gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX 13:gpgcheck=1 14:

みんなの回答

  • dev_null
  • ベストアンサー率67% (37/55)
回答No.3

設定ファイルの差分をとってパッチを作成。元のファイルにパッチを適用ではだめですか。 ただし、ファイル数が多いとパッチの作成が面倒ですが。

すると、全ての回答が全文表示されます。
  • notnot
  • ベストアンサー率47% (4903/10364)
回答No.2

空行を基準にして入れるのは将来的に空行があるかどうか不明なので危険ですね。 構文を守ったまま見た目もきれいに入れるのはsedでは難しいと思います。 案1:[ で始まる行の直前と、ファイル末尾に入れる mv /etc/yum.repos.d/zabbix.repo /etc/yum.repos.d/zabbix.repo.old && sed -e '/^\[/ipriority=10' -e '$apriority=10' /etc/yum.repos.d/zabbix.repo.old >/etc/yum.repos.d/zabbix.repo 案2:gpgcheck=の直後に入れる mv /etc/yum.repos.d/zabbix.repo /etc/yum.repos.d/zabbix.repo.old && sed '/^gpgcheck=/apriority=10' /etc/yum.repos.d/zabbix.repo.old >/etc/yum.repos.d/zabbix.repo

すると、全ての回答が全文表示されます。
回答No.1

7行目と、14行目というのが空欄の行という意味なら、例えばこんな感じ? # sed 's/^$/priority=10\ /' /etc/yum.repos.d/zabbix.repo > tmp && mv tmp /etc/yum.repos.d/zabbix.repo もっと細かい条件があるとしたら、自分だったらPerlなりPythonなりRubyなりのスクリプト言語でプログラムを書きますが。

すると、全ての回答が全文表示されます。