我有一个文本文件 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 的不可知论方法这将只解析一次文件:
awk -F '_' '{ print > $1 ".txt" }' chunk_names.txt
关于linux - Grep 查找文本文件中的特定数字并按数字文本文件输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58853550/