すべてのサブディレクトリの下のすべての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::木の枝スクリプトを書くことができればうまくいきます。