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">