我有以下批次
#! /bin/bash
PATTERN1="MACRO"
PATTERN2="HI"
sed -e "s/${PATTERN1}/${PATTERN2}/g" config.conf
因此,config.conf文件的内容是
ABC DEF ERF MACRO ERR MACRO
因此,命令的输出是:
ABC DEF ERF HI ERR HI
但所需的输出是
ABC DEF ERF MACRO ERR HI
换句话说,我只需要用每行完全匹配的模式替换模式,在同一行中没有空格或其他单词。
答案 0 :(得分:3)
将<{1}}和^
添加到您要执行的模式中完全匹配
以您的示例:您可以这样做:
$
或使用原始的sed行,修改 sed -e "s/^${PATTERN1}$/${PATTERN2}/g" ...
:
PATTERN1
答案 1 :(得分:0)
试试这个:
awk '$0==p {$0=r}8' p="${PATTERN1}" r="${PATTERN2}" file