有人可以帮我解决这个bash命令:
sed -i "s/\$CORPUS_DATA/$CORPUS_DATA/g" conf/*.xml
这是什么意思?
答案 0 :(得分:2)
它取代了文本" $ CORPUS_DATA"的值。在文件中,为环境变量$CORPUS_DATA
的实际值。
测试它:
$ CORPUS_DATA=hello
$ echo '$CORPUS_DATA'
$ $CORPUS_DATA
$ echo '$CORPUS_DATA' | sed "s/\$CORPUS_DATA/$CORPUS_DATA/g"
hello
请注意,第一部分会转义$
符号,因此正则表达式将匹配文本" $ CORPUS_DATA"从字面上。第二部分没有,这意味着它采用了env变量的值。
答案 1 :(得分:1)
以下是对代码的解释。
sed -i "s/\$CORPUS_DATA/$CORPUS_DATA/g" conf/*.xml
-i
用于将输出保存到Input_file本身。
s
使用替换选项将\$CORPUS_DATA
更改为shell变量$CORPUS_DATA
值。
g
表示对当前行中的所有匹配项进行此更改。
conf/*.xml
遍历conf目录中的所有xml文件。