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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

追问

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

参考技术A 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() # 关闭文件追问

大佬没反应

php 通过 strtr 方法来替换文本中指定的内容

通过在文本中指定待替换的内容,如:

[{name}]

[{age}]

格式可以自己定义,

大概过程:

      在文本中定义需要替换的文本内容;

     以键值对的方式 组织数据(数组);

     用 file_get_contents() 读取整个文件的内容;

     再用 strtr() 替换内容。

function make_content($file, array $vars = array()) {
        $pairs = array();
        foreach ($vars as $name => $value)
        {
            $key = sprintf(‘[{%s}]‘, strtoupper($name)); // [{}] 格式自己定义
            $pairs[$key] = (string)$value;
        }
        
        $template_content =  file_get_contents($file); // 将文本读成字符串

        $result = strtr($template_content, $pairs); // 整个数组替换
        return $result;
    }

 



以上是关于linux文本替换,将文本b中内容替换到文本a中指定字符串之间的主要内容,如果未能解决你的问题,请参考以下文章

linux 批量循环查找替换 追加问题

Linux批量替换文本,文件夹内所有文本内容

python文本内容替换?

linux中如何对一个文本内容进行排序呢

替换到文本对象的末尾

linux之文本内容替换命令sed