linux - Grep 查找文本文件中的特定数字并按数字文本文件输出

标签 linux grep bioinformatics

我有一个文本文件 chunk_names.txt,如下所示:

chr1_12334_64321
chr1_134435_77474   
chr10_463252_74754
chr10_54265_423435 
chr13_5464565_547644567

这是一个示例,但表示了所有染色体(1...22、X 和 Y)。所有条目都遵循相同的格式chr{1..22, X or Y}_*数字字符串*__*数字字符串*

我想将它们分成每个染色体文件,例如所有以 chr10 开头的 block 都被放入一个名为 chr10.txt 的文件中:

在 Linux 中我已经尝试过:

for i in {1..22}
do 
    grep chr$i chunk_names.txt > chr$i.txt 
done 

但是,chr1.txt 输出文件现在包含所有带有 1 的染色体组 block (1、10、11、12 等)。

我将如何修改此脚本以分离出染色体?

我还没有解决如何在同一个脚本中包含 X 或 Y 染色体的问题,目前正在单独运行它

我尝试过的事情:

grep -o gives me just "chr$i" as an output 
grep 'chr$i' gives me blank files
grep "chr$i" has the initial problem 

非常感谢您的宝贵时间。

最佳答案

您的“for”循环将意味着解析您的文件 N 次(其中 N 是列表中染色体/重叠群的数量)。这是使用 的不可知论方法这将只解析一次文件:

awk -F '_' '{ print > $1 ".txt" }' chunk_names.txt

关于linux - Grep 查找文本文件中的特定数字并按数字文本文件输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58853550/

相关文章:

python - 在 python 和 bash 中限制 glob

linux - 无法创建 redis 集群(抱歉,无法连接到节点)

linux - 如何使用linux grep命令?

grep - grep 只能识别文件中的一个匹配单词吗?

linux - 在 Bash 中从另一个较大文件中查找文件行的最快方法

linux - 如何调试 ARM Linux 内核 (msleep()) 锁定?

linux - AIX 上的 CPU 用户时间和系统时间

python - 我正在努力进行 Beta 桶重构

java - 生物信息学——需要获取ATOMS序列

python - 获取与两个 fastq 文件不同的记录