linux - 替换 awk 的结果

标签 linux bash unix sed awk

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

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

哪个返回:

/var/www/

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

有人可以帮忙吗?

最佳答案

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

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

根据您的评论

the file is like this : DocumentRoot /var/www But it also can be like : DocumentRoot /usr/www/

你可以用 sed 做任何事情:

$ cat a
DocumentRoot /var/www
eee
$ sed -i 's#DocumentRoot.*#DocumentRoot hello#g' a
$ cat a
DocumentRoot hello
eee

关于linux - 替换 awk 的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18890284/

相关文章:

unix - 将同一配置单元 session 中的多个查询输出导出到 shell 脚本?

linux - SVN 错误 : Can't convert string from native encoding to 'UTF-8'

html - 如何将正则表达式模式匹配转换为小写以进行 URL 标准化/整理

linux - 为什么 sed 在脚本中不能正常工作

macos - MAC问题。导出变量时不是有效的标识符

Bash 脚本意外运算符

linux - bash shell : How to parse file names

javascript - ssh2连接到多个服务器并获取输出nodejs

Centos6上的Ruby安装问题

用于替换新行的正则表达式