
从SED:在最后一行之后插入文本? - Unix 和 Linux 堆栈交换,我了解到$
如果在 sed 外部使用,则替换代表文件结尾。我尝试在下面使用它来替换文件末尾abc
之后和之前发生的所有事件# Start
123
代码:
file=Data.txt
Initial="# Start";
Final='\$'
orig="abc";
new="123";
sed -i -r -e "\!${Initial}!,\!${Final}!{s!${orig}!${new}!g}" ${file} ;
数据.txt
# Start
abc
abc
$
abc
abc
输出:
# Start
123
123
$
abc
abc
预期输出:
# Start
123
123
$
123
123
我缺少什么?即如何告诉 sed 这$
意味着文件结束?
注意:我正在转义$
,因为我在 sed 表达式中使用双引号(为了更安全的变量扩展)。我希望这是正确的。你能对此发表评论吗?
答案1
这有效:(注意:${Final}
而不是/${Final}/
)
file=Data.txt
Initial="# Start";
orig="abc";
new="123";
Final='$' # Line Number
sed -r -e "/${Initial}/,${Final}s/${orig}/${new}/g" ${file}