Sed
替換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">
如果目前文件夾名稱只能是帶有下劃線 (
_
) 的字母數字,這將起作用: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">