头部测试区域.bed
21 15390708
21 15890068 16388793
21 16390041 16888505
21 16889055 17388185
21 17388731 17886839
我想使用 .bed 文件的每一行作为输出名,例如:
while readline
do zip.sh > 21_15390708_ 15889554.zip
21_16390041-16888505.zip
我读了一些关于 xargs 能够做到这一点的内容。但我对它如何将每一行输出到唯一的输出文件名感到困惑。
xargs -a testregions.bed -I {} zip inputfile {} >> outputfile_{}.zip
等等。任何帮助深表感谢。
答案1
这是一种易于理解的方法,您可以对testregions.bed
.首先,删除原始文件中的所有空格testregions.bed
,然后仅将数字保存到新文件中new.txt
,如下所示:
cat testregions.bed | tr -d "[:blank:]" > new.txt
然后,您将为您的每一行创建一个新文件,如下new.txt
所示:
cat new.txt | while read line do touch "$line".zip done
然后你可以删除new.txt
:
rm new.txt
test.sh
因此,创建.zip
文件的脚本testregions.bed
将如下所示:
#!/bin/sh
cat testregions.bed | tr -d "[:blank"]" > new.txt
cat new.txt | while read line
do
touch "$line".zip
done
rm new