shell 对指定内容进行替换

各位大侠,小弟第一次用sed不太会用,现写个shell是想把a.txt的内容通过拼接字符串的方式变成指定内容后,替换了b.txt中的内容例如:a.txt内容:aaaabb... 各位大侠,小弟第一次用sed不太会用,现写个shell是想把a.txt的内容通过拼接字符串的方式变成指定内容后,替换了b.txt中的内容
例如:a.txt 内容: aaaa
bbbb
cccc
文件a.txt经过修改后变成aaaa-K,bbbb-K,cccc-K,
文件b.txt内容: 1234 aaaa
2345 bbbb
现想把aaaa-K替换了b.txt文件中的aaaa字符,脚本写完了,但执行后发现文件未被修改。请指教。
#!/bin/sh
test='-K'
file_info=$(cat/$HOME/a.txt)
file_path=$(cat /$HOME/b.txt)
file_id_new=${file_info}${test}
echo $file_id_newcd /$HOME/test_123/
sed -i 's/$file_path/$file_id_new/' b.txt
echo "完成!
展开
 我来答
hwguan
2013-07-26
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
非要用sed么? 你的脚本最关键的一句sed -i 's/$file_path/$file_id_new/' b.txt 是错误的
完全有更简练的工具 如 cut 和 paste
更多追问追答
追问
请问怎么用 cut和paste,谢谢!
追答
要明确一点的是a.txt, b.txt是不是行数相等,恰好每行b.txt的aaaa对应a.txt的aaaa-K
还是a.txt只是集中了要被替换的字符串?
如果是后者可以把要替换的字符串集中在一个数组里,而不是a.txt里
#!/bin/sh

patgroup=(aaaa bbbb cccc) #b.txt中要替换的字串

repgroup=(aaaa-K bbbb-K cccc-K) #准备替换成的字串

cd /$HOME/test_123/

for n in `seq 1 ${#patgroup}`
do

sed -i "s/${patgroup[n]}/${repgroup[n]}/" b.txt
done
echo "完成!
锐道
2025-09-24 广告
URule Pro Java 规则引擎,一款给业务人员使用的可视化商业决策规则引擎系统,打开浏览器即可开始设计业务规则;URule Pro是一款自主研发纯Java规则引擎,亦是一款国产智能风控决策引擎,可以运行在Windows、Linux、... 点击进入详情页
本回答由锐道提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式