【问题标题】:Replace strings contain whitespace using sed command shell script使用 sed 命令 shell 脚本替换包含空格的字符串
【发布时间】:2017-12-03 05:52:28
【问题描述】:

我正在尝试使用 sed 命令替换 xml 文件中的字符串。我的脚本包含以下代码。

SEARCH='key="identifierA" value ="000000 00:00:00"'
REPLACE='key="identifierA" value ="101617 00:00:00"'

TEST_DIR=home/test/
TEST_FILE="test.xml"

ChangeXml(){

ModifyValue $TEST_DIR $TEST_FILE $SEARCH $REPLACE

}

ModifyValue (){
cd $1
echo "Search : $3 Replace : $4 "
sed -i "s/$3/$4/g" $2
}

#Actions performed

ChangeXml

但是 echo 中的这个 #3 返回 identifierA 并且 $4 返回 000000 00:00:00。它应该给出分配给这些变量的值。由于此替换未按预期工作。试图转义 key="identifierA" value ="000000 00:00:00" 之间的空格。但没有得到结果。我对 shell 脚本非常陌生。谁能告诉我原因并纠正我以达到预期的结果?

【问题讨论】:

    标签: linux bash shell sed sh


    【解决方案1】:

    如果变量可以包含空格,请引用它们:

    ModifyValue "$TEST_DIR" "$TEST_FILE" "$SEARCH" "$REPLACE"
    

    否则,$SEARCH 将被分段发送(在空白处分割)并填充多个参数。

    【讨论】:

    • 您好,效果很好。使用 sed 有没有更好的解决方案?
    • “更好”是什么意思?它工作得很好,它怎么能工作得更完美?
    • 对不起。我的意思是我替换字符串的方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-23
    • 2014-10-19
    • 1970-01-01
    • 2019-08-24
    • 1970-01-01
    • 2021-05-16
    • 1970-01-01
    相关资源
    最近更新 更多