这个sed命令的含义是什么?

时间:2018-05-14 09:33:36

标签: regex bash sed command

有人可以帮我解决这个bash命令:

sed -i "s/\$CORPUS_DATA/$CORPUS_DATA/g" conf/*.xml

这是什么意思?

2 个答案:

答案 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文件。