Shell 如何使用awk/sed替换特定线路';s值而不是整行。

Shell 如何使用awk/sed替换特定线路';s值而不是整行。,shell,awk,sed,Shell,Awk,Sed,返回值=$cfg['blowfish_secret']='A-wImn{Ax[K5F7MQg.2Uh6D1ICU:C0fe'; cat phpmyadmin/config.inc.php | grep 'blowfish_secret' 返回值=A-wImn{Ax[K5F7MQg.2Uh6D1ICU:C0fe grep 'blowfish_secret' config.php | awk -F "'" '{print $4}' 返回值=17 我的目标是在不替换整行的情况下,将第17行的值“A

返回值=$cfg['blowfish_secret']='A-wImn{Ax[K5F7MQg.2Uh6D1ICU:C0fe';

cat phpmyadmin/config.inc.php | grep 'blowfish_secret'
返回值=A-wImn{Ax[K5F7MQg.2Uh6D1ICU:C0fe

grep 'blowfish_secret' config.php | awk -F "'" '{print $4}'
返回值=17

我的目标是在不替换整行的情况下,将第17行的值“A-wImn{Ax[K5F7MQg.2Uh6D1ICU:C0fe”替换为“My_random_string”。有没有办法实现这一点

如果您有任何建议,我们将不胜感激

grep -n "blowfish_secret" phpmyadmin/config.inc.php | cut -d: -f 1
使用单引号作为字段分隔符,如果第二个字段是右键,则替换第四个字段。
“\047”
在awk中是一个包含一个字符的字符串,即单引号

要将新内容写回原始内容,请选择以下选项之一:

awk -v repl="my_random_string" '
    BEGIN {FS = OFS = "\047"}
    $2 == "blowfish_secret" {$4 = repl}
    1
' config.file

OFS
未指定,将默认为空格。
awk -v ... config.file > tempfile && mv tempfile config.file
awk -v ... config.file | sponge config.file   # from the 'moreutils' package
gawk -i inplace -v ... config.file