AWK管道输出至SED,以更换

AWK管道输出至SED,以更换,awk,sed,Awk,Sed,我正在尝试使用AWK管道替换一个字符串 grep pdo_user /html/data/_default_/configs/application.ini | awk '{print $3}' | sed -i 's/$1/"username"/g' /html/data/_default_/configs/application.ini 但找到的字符串未被替换 输出 grep pdo_user/html/data/_default\u/configs/application.ini | a

我正在尝试使用AWK管道替换一个字符串

grep pdo_user /html/data/_default_/configs/application.ini | awk '{print $3}' | sed -i 's/$1/"username"/g' /html/data/_default_/configs/application.ini
但找到的字符串未被替换

输出

grep pdo_user/html/data/_default\u/configs/application.ini | awk'{print$3}'

“根目录”


有什么建议吗?

我建议使用awk和mv:

awk '/pdo_user/ && $3=="\"root\"" {$3="\"username\""}1' /path/to/application.ini > /path/to/application.tmp
mv /path/to/application.tmp /path/to/application.ini

使用AWK和SED基于方舱顶部的工作解决方案

sed -i 's/'$(awk '/pdo_user/{print $3}' /path/to/application.ini)'/"username"/' /path/to/application.ini

请参阅:但是
AWK
中的
$3
是一个字符串
“root”
,我每次都需要用
“username”
替换
's/$1/“username”/g'
我建议用
's/'$1'/“username”/g'
替换
<代码>$1
不应包含任何sed可以解释为命令的特殊字符。我认为您需要类似于
sed的/'$(awk'/pdo_user/{print$3}'/path/to/application.ini)/“username”//path/to/application.ini
?祝你好运。@Cyrus更正-我正在搜索
pdo_user
,它在3r位置包含一些字符串(在本例中,字符串是
“root”
),我想用
“username”
(两个字符串都包含双引号)替换该字符串,但
pdo_user
可能不同于
“root”
这只是在我的例子中,但是这个例子足够好,可以在没有语句
&&$3==“root\”