linux文本替换,将文本b中内容替换到文本a中指定字符串之间

有文件A内容如下
<color name="vector_bg">#ff55c2bc</color><color name="background_primary">#ffffffff</color><color name="action_mode_title_text_p">#cdffffff</color>
......有文件B内容如下
0AF5c8
0AFDc8
00F3BE
0A3569
0A3F7A
0C1F49
……
希望将文本B从m行到n行之间的内容,依次替换到文本A中指定字符串之间>#********</color>,并将#后面的两个字符都改为FF,替换完成后保存到文件A
<color name="vector_bg”>#FF00F3BE</color>
<color name="background_primary”>#FF0A3569</color>
<color name="action_mode_title_text_p”>#FF0A3F7A</color>
没有分了,求好心大佬帮忙,感激不尽。

1、思路:提前修改b.txt文件内容为

<color name="vector_bg”>#FF00F3BE</color>
<color name="background_primary”>#FF0A3569</color>
<color name="action_mode_title_text_p”>#FF0A3F7A</color>

2、在m行做标记<! -- start -->

3、对a.txt执行m-n行删除

sed -i '11,20d' a.txt

4、将b.txt内容插入至<! -- start -->

sed -i "/start/r b.txt" a.txt

追问

有好几千个#********标签开头的行

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-12-26
import os os.chdir('d:\\') # 跳到D盘 if not os.path.exists('pp.txt'): # 看一下这个文件是否存在 exit(-1) #,不存在就退出 lines = open('pp.txt').readlines() #打开文件,读入每一行 fp = open('pp2.txt','w') #打开你要写得文件pp2.txt for s in lines: fp.write( s.replace('love','hate').replace('yes','no')) # replace是替换,write是写入 fp.close() # 关闭文件追问

大佬没反应

相似回答