shell脚本实现文件内容替换,替换a.txt的start到end之间的内容为b.txt的内容。

要用b.txt的所有内容替换掉a.txt的start444455556666end... 要用b.txt的所有内容替换掉a.txt的
start
4444
5555
6666
end
展开
 我来答
百度网友5311d79
推荐于2016-11-08 · TA获得超过1.9万个赞
知道大有可为答主
回答量:6356
采纳率:71%
帮助的人:3212万
展开全部

好方法。

另外,管道符不是必要的,可以通过-e选项,在一个sed命令中同时使用两个表达式。

sed -i -e '/^start/,/^end/{//!d}' -e '/^start/r b.txt' a.txt

 或者直接两个语句分号分隔:

sed -i '/^start/,/^end/{//!d};/^start/r b.txt' a.txt
匿名用户
2014-07-18
展开全部
cat b.txt > a.txt
更多追问追答
追问
不是追加到后面啊,也不是覆盖,只是是要替换中间一部分
追答
提供个较笨的办法:
找到start 到end的几行,然后删掉,再cat b.txt的内容到a.txt 的start 这一行下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
不知详解
2014-07-18 · 知道合伙人软件行家
不知详解
知道合伙人软件行家
采纳数:609 获赞数:2252
自学计算机。

向TA提问 私信TA
展开全部
你的代码写的不太好。用这个
sed -e '/^end/r b.txt' -e '/^start/,/^end/d' a.txt

就2句sed命令

/^end/r b.txt
/^start/,/^end/d
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式