
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 "完成! 展开
例如: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 "完成! 展开
1个回答
展开全部
非要用sed么? 你的脚本最关键的一句sed -i 's/$file_path/$file_id_new/' b.txt 是错误的
完全有更简练的工具 如 cut 和 paste
完全有更简练的工具 如 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、...
点击进入详情页
本回答由锐道提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询