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

相关内容