Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 当行与另一个字符串完全匹配时,用另一个字符串替换原位字符串_Bash_Variables_Sed_Replace_In Place - Fatal编程技术网

Bash 当行与另一个字符串完全匹配时,用另一个字符串替换原位字符串

Bash 当行与另一个字符串完全匹配时,用另一个字符串替换原位字符串,bash,variables,sed,replace,in-place,Bash,Variables,Sed,Replace,In Place,在以下示例中(example.txt) 我想用使用变量匹配“name1”的“new_string”行替换文件“stringB1” 我使用以下方法成功打印感兴趣的行: NAME="name1" sed -n "/^\<${NAME}\>/p" example.txt NAME=“name1” sed-n“/^\/p”example.txt 但是,当我试图使用bash变量进行替换时,打印行时遇到问题: NAME="name1" STRING_TO_REPLACE="stringB1"

在以下示例中(example.txt)

我想用使用变量匹配“name1”的“new_string”行替换文件“stringB1”

我使用以下方法成功打印感兴趣的行:

NAME="name1"
sed -n "/^\<${NAME}\>/p" example.txt
NAME=“name1”
sed-n“/^\/p”example.txt
但是,当我试图使用bash变量进行替换时,打印行时遇到问题:

NAME="name1"
STRING_TO_REPLACE="stringB1"
NEW_STRING="new_string"
sed -n "/^\<${NAME}\>/s/\<${STRING_TO_REPLACE}>/\<${NEW_STRING}\>/" example.txt
NAME=“name1”
STRING_TO_REPLACE=“stringB1”
新建字符串=“新建字符串”
sed-n“/^\/s/\/\/”example.txt
最后一个想法是使用sed-i选项直接替换文件中的字符串

sed -i "/^\<${NAME}\>/s/\<${STRING_TO_REPLACE}>/\<${NEW_STRING}\>/" example.txt
sed-i/^\/s/\/\/”example.txt

sed/$NAME/s/$STRING\u替换/$NEW\u STRING/“文件”
?您使用了错误的变量名($PARENT)-->
sed/^$NAME\>/s/\/$NEW\u STRING/“
@glennjackman很好,我的错误!我编辑了我的message@Cyrus谢谢,它起作用了!如果我不使用-n选项,我的解决方案似乎也能起作用。我使用它只是为了查看所做的修改,但它似乎是一个错误。
sed -i "/^\<${NAME}\>/s/\<${STRING_TO_REPLACE}>/\<${NEW_STRING}\>/" example.txt