首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查找VI中任何有ATCG以外的内容的行

查找VI中任何有ATCG以外的内容的行
EN

Unix & Linux用户
提问于 2018-08-31 15:42:21
回答 2查看 512关注 0票数 7

我有一个基因组数据文件,大约有500万行长,应该只有A,T,C和G的字符。问题是,我知道这个文件应该有多大,但它比这个稍微大一些。这意味着,某种分析出了问题,或者有一些线条包含了基因组数据以外的其他东西。

有没有办法找出除了A、T、C或G之外的任何线?由于文件的性质,任何其他字母、空格、数字、符号都不应该出现。我经历了一个又一个符号的搜索,所以我希望有一个更简单的方法。

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2018-08-31 15:47:49

首先,您肯定不想在编辑器中打开文件(它太大了,无法用这种方式编辑)。

相反,如果您只想确定该文件是否包含ATCG以外的任何内容,则可以使用

代码语言:javascript
运行
复制
grep '[^ATCG]' filename

这将返回包含这四个字符以外的任何内容的所有行。

如果要从文件中删除这些字符,可以使用

代码语言:javascript
运行
复制
tr -c -d 'ATCG\n' <filename >newfilename

(如果这是“更正”文件的正确方法,我不知道)

这将删除文件中并非四个字符之一的所有字符,并保留换行符(\n)。编辑后的文件将被写入newfilename

如果是系统错误给文件添加了一些内容,那么sedawk可能会纠正这种错误,但我们还不知道您的数据是什么样子的。

如果在vivim中打开了文件,则命令

代码语言:javascript
运行
复制
/[^ATCG]

将在编辑缓冲区中找到不是ATCG的下一个字符。

:%s/[^ATCG]//g会把它们全部移除。

票数 19
EN

Unix & Linux用户

发布于 2018-08-31 23:21:39

我把重点放在标题上

查找VI中任何有ATCG以外的内容的行

我从VI编辑器中测试了这个,所谓的“最后一行模式”。

:%!tr -c -d 'ATCG\n

:进入命令行模式,%将整个文件匹配为一个范围,!过滤器通过外部命令tr -c -d 'ATCG\n筛选,该命令恰好与@Kusalananda相同)。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/466068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档