在以下示例(example.txt)
name1 stringA1 stringB1 stringC1
name2 stringA2 stringB2 stringC2
我想用变量匹配“ name1”的“ new_string”行替换文件“ stringB1”。
我成功使用以下方法打印了感兴趣的行
NAME="name1"
sed -n "/^\<${NAME}\>/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
最终的想法是使用sed -i选项直接替换文件中的字符串
sed -i "/^\<${NAME}\>/s/\<${STRING_TO_REPLACE}>/\<${NEW_STRING}\>/" example.txt