0

<host></host>ファイルの3行目にあります。に置き換えたい<host>my_dB</host>。でこれを行う方法sed。4 行目、5 行目、6 行目もこのような置換を行いたいと考えています。

<host></host>
<host>my_dB</host>
4

4 に答える 4

4

このような:

$ sed '3,6 s/<host>/<host>my_dB/' file

デモ:

$ cat file
1: <host></host>
2: <host></host>
3: <host></host>
4: <host></host>
5: <host></host>
6: <host></host>
7: <host></host>

$ sed '3,6 s/<host>/<host>my_dB/' file
1: <host></host>
2: <host></host>
3: <host>my_dB</host>
4: <host>my_dB</host>
5: <host>my_dB</host>
6: <host>my_dB</host>

    7:

変更をファイルに保存するには、-iオプションを使用します

$ sed -i '3,6 s/<host>/<host>my_bd/' file

ただし、実際には XML パーサーを使用する必要があります。で XML を解析することregexpは、本当に悪い考えです。

于 2013-03-11T10:08:06.760 に答える
1

<host></host>ファイル内のすべてのインスタンスをwithに置き換えるには<host>my_dB</host>、次を実行します。

sed 's|<host></host>|<host>my_dB</host>|g' file
于 2013-03-11T10:07:24.810 に答える
1

それぞれ、次のような方法で実行できます。

sed -i "s/<host><\/host>/<host>my_db<\/host>/" foo.txt

これ-iは、ファイルをその場で上書きすることを意味します。そのフラグを削除して、変更を stdout に書き込みます。

これが通常のタスクでファイルの詳細を入力する場合は、簡単にするためにファイルにアンカーを追加することを検討してください。例えば:

<host>DB_HOST</host>

次に、sedは次のようにする必要があります。

sed -i 's/DB_HOST/my_db/'
于 2013-03-11T10:08:51.317 に答える
0

これを試して:

 sed -r '3,5s#(<host>)(</host>)#\1my_dB\2#' file
于 2013-03-11T10:07:11.630 に答える