特定の行で特定の文字列を見つけて置き換える方法

特定の行で特定の文字列を見つけて置き換える方法

すべてのサブディレクトリの下のすべてのxmlで特定の文字列を見つけて置き換えることができるコードを開発しました。しかし、私は起こったすべてのものが置き換えられたくありません。 XML全体では、コードはxyzタグを見つけ、そのタグ内のxyzをabcに置き換える必要があります。 XMLの他の「xyz」はそのままにしておく必要があります。この問題を解決するのに役立ちますか?

ありがとうございます...

答え1

sedを使用して同じことを実行できます。

sed -i.bkp  5'i'"s/search/replace/"  inputfile
  • -i.bkp inpufile.bkpでバックアップして元のファイルを編集する
  • 5'i' 5行目に移動
  • s/検索と置換

特定の単語「NAME」を検索し、同じ行で「RAM」を検索して「SHYAM」に置き換えることもできます。以下の例をご覧ください。

sed -e '/NAME/s/RAM/SHYAM/g' filename

引用する協会

答え2

@donothingsuccesが述べたように、abcタグ内にxyzタグなどの要件がある場合は、単純なテキスト置換でxmlを変更するのが一般的です悪い考え 非常に厳密で既知の入力xmlファイル形式がない場合はまれです。 XMLを理解する必要があります。

xml-sed~からxml-coreutils行の代わりに「echo-leaf」でsedコマンドを実行できます。これは、デフォルトでは、sedがPATHを含むxmlフラグメントで実行されることを意味します。だからあなたは次のようなものを持つでしょう

xml-sed 's/oldstring/newsting/' file.xml :/abc/xyz

Python lxmlまたはPerl XML::木の枝スクリプトを書くことができればうまくいきます。

関連情報