Sed

替換xml中的字元串

  • December 4, 2018

我正在嘗試替換 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">

引用自:https://unix.stackexchange.com/questions/485927