XMLで文字列を置き換える

XMLで文字列を置き換える

XMLファイルのフォルダ名の値を変更しようとしています。 grep を使用して必要なパターンを検索し、フォルダ名の値 DF_GCSS を変数の ABC_DEF に置き換えます。以下の説明はフォルダ名の値を変更するためだけに使用されていますが、出力は予想とは異なります。既存のフォルダ値に変数データを追加します。

FLDR_NM=ABC_DEF
grep -i "<FOLDER NAME" file_name.xml |  sed 's/<FOLDER NAME="[Aa0-Zz9]"*/<FOLDER NAME="'$FLDR_NM'"/1g'

出力:

<FOLDER NAME="ABC_DEF"F_GCSS" GROUP="" OWNER="Administrator" SHARED="NOTSHARED" DESCRIPTION="" PERMISSIONS="rwx---r--" UUID="5ff15b2a">

予想出力:

<FOLDER NAME="ABC_DEF" GROUP="" OWNER="Administrator" SHARED="NOTSHARED" DESCRIPTION="" PERMISSIONS="rwx---r--" UUID="5ff15b2a">

ベストアンサー1

現在のフォルダ名がアンダースコア()を含む英数字のみである場合に_機能します。

my_folder="ABC_DEF"; 
cat tmp.xml | sed -e "s/FOLDER NAME=\"[[:alnum:]_]*\"/FOLDER NAME\=\"$my_folder\"/g"

フォルダ名はtmp.xml次のように設定されます。F_GCSS

出力:

<FOLDER NAME="ABC_DEF" GROUP="" OWNER="Administrator" SHARED="NOTSHARED" DESCRIPTION="" PERMISSIONS="rwx---r--" UUID="5ff15b2a">

おすすめ記事