搜索
查看: 896|回复: 5

linux两个文件内容的匹配,并替换

[复制链接]

2

主题

3

帖子

67

积分

注册会员

Rank: 2

积分
67
发表于 2018-11-24 14:02:00 | 显示全部楼层 |阅读模式
本帖最后由 a601617165 于 2018-11-24 14:04 编辑

我有file1文件,内容是这样
file2文件,内容是这样
我想把file1的第一列与file2的">"后的内容先匹配好,匹配完成之后再用file1中对应的第二列替换掉file2中">"的内容,该怎么写脚本?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x



上一篇:<R for Data Science> 读书笔记8 | 第十二章: Tidy data
下一篇:R for Data Science-014 比较运算符 逻辑运算符 缺失值
回复

使用道具 举报

0

主题

5

帖子

71

积分

注册会员

Rank: 2

积分
71
发表于 2018-11-26 14:23:26 | 显示全部楼层
我的思路是:1. 先把fasta文件转成\tab文件,也就是两列,第一列是id,第二列是序列。2. 然后在根据id列匹配,增加第三列(即file1),这样就有三列。然后选目的列(2,3)保存为新的fasta就行了。
回复 支持 1 反对 0

使用道具 举报

0

主题

1

帖子

95

积分

注册会员

Rank: 2

积分
95
发表于 2018-11-28 16:23:13 | 显示全部楼层
仅供参考哈:
awk 提取file1的所需两列 >> file2转换为tab键分隔的文件 >> R里面的merge函数 >> subset提取所需列
回复 支持 反对

使用道具 举报

0

主题

11

帖子

105

积分

注册会员

Rank: 2

积分
105
发表于 2018-11-29 18:06:04 | 显示全部楼层
把file2的>开头的行尾的回车符替换成tab,这个文件就每两行变成一行了,然后用awk或者perl很容易就匹配好了,再次输出的时候把最后一列单独另起一行写,就又变回fasta格式了。
回复 支持 反对

使用道具 举报

2

主题

3

帖子

67

积分

注册会员

Rank: 2

积分
67
 楼主| 发表于 2018-11-30 16:19:09 | 显示全部楼层
好的,谢谢各位
回复 支持 反对

使用道具 举报

0

主题

19

帖子

123

积分

注册会员

Rank: 2

积分
123
发表于 2019-6-12 05:36:04 | 显示全部楼层
from collections import OrderedDict
f1=open('linux两个文件内容的匹配,并替换 file1.txt')
f2=open('linux两个文件内容的匹配,并替换 file2.txt')
with open('linux两个文件内容的匹配,并替换 output.txt','w') as f3:
        dict1=OrderedDict()
        seq=''
        for line1 in f1:
                line1=line1.strip().split('\t')
                key=line1[0]
                value=line1[1]
                dict1[key]=value

        for line2 in f2:
                line2=line2.strip()
                if line2.startswith('>'):
                        if line2[1:] in dict1.keys():
                                f3.write('>'+dict1[line2[1:]]+'\n')
                else:
                        f3.write(line2+'\n')
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|生信技能树    

GMT+8, 2019-6-26 17:12 , Processed in 0.037428 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.