考虑以下输入字符串。
PLOG_NFET_SLVT nf=3 ng=1 nl=20n
输出
PLOG_NFET_LVT nf=3 ng=1 nl=14n
注意:第一个和最后一个单词被替换。数据之间也存在差异。所以我不能有一个恒定的模式。我尝试使用下面的命令。
sed -i 's/PLOG.*FET_SLVT.*nl=20n/PLOG.*FET_LVT.*nl=14n/g' file
输出是:
PLOG.*FET_LVT.*nl=14n
有什么帮助吗?
答案1
您可以在搜索模式中使用捕获组并将反向引用(\1
或\2
)添加到替换模式:
sed 's/PLOG_\([A-Z]\)FET_SLVT \(.*\) nl=20n/PLOG_\1FET_LVT \2 nl=14n/'
答案2
尝试这个,
sed -i 's/^PLOG_NFET_SLVT/PLOG_NFET_LVT/g;s/20n$/14n/g' file
- 寻找模式开始与
PLOG_NFET_SLVT
并替换为PLOG_NFET_LVT
- 并搜索模式结束与
20n
并替换为14n
答案3
尝试这个:
sed 's/SLVT/LVT/;s/20n/14n/'
例子
$ echo "PLOG_NFET_SLVT nf=3 ng=1 nl=20n" | sed 's/SLVT/LVT/;s/20n/14n/'
PLOG_NFET_LVT nf=3 ng=1 nl=14n