0

基本上,我想做的是用其他东西替换从 awk 解析的结果。我有以下 awk 命令:

awk '$1~/^DocumentRoot/{print $2}' /etc/apache2/sites-available/default

哪个返回:

/var/www/

我想要做的是替换/var/www/文件中的(当然,它可以是任何东西,而不是/var/www/)。我试图通过管道传输一个 sed 命令,但我不知道该怎么做......

任何人都可以帮忙吗?

4

2 回答 2

2

捕获text变量中的结果,然后捕获sed -i它。

text=$(awk '$1~/^DocumentRoot/{print $2}' /etc/apache2/sites-available/default)
sed -i "s#$text##g" /etc/apache2/sites-available/default

根据您的评论

文件是这样的: DocumentRoot /var/www 但它也可以是: DocumentRoot /usr/www/

你可以用 sed 做任何事情:

$ cat a
DocumentRoot /var/www
eee
$ sed -i 's#DocumentRoot.*#DocumentRoot hello#g' a
$ cat a
DocumentRoot hello
eee
于 2013-09-19T08:59:15.153 回答
2

我猜您想用/var/www/其他东西替换,比如说/var/www2/并显示修改后的路径。如果是这种情况,请

awk '$1~/^DocumentRoot/{print $2="/var/log/"; print;}' /etc/apache2/sites-available/default
于 2013-09-19T08:59:22.300 回答