Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在多个文件上使用awk(每个文件的第一个字段)并获得每个输入文件的结果_Awk_Sequence_Fasta_Gnu Parallel - Fatal编程技术网

如何在多个文件上使用awk(每个文件的第一个字段)并获得每个输入文件的结果

如何在多个文件上使用awk(每个文件的第一个字段)并获得每个输入文件的结果,awk,sequence,fasta,gnu-parallel,Awk,Sequence,Fasta,Gnu Parallel,我尝试了ls*.fasta | parallel--gnu“awk'{print$1}'>{/}.outputfile.txt” 它并没有产生我所需要的结果。我有48个文件,我需要提取这些字段并将它们输出到48个独立的文件中 我可以很好地运行它,但我必须对每个文件逐一执行:awk'{print$1}'BLAST\u output\u file.txt>ID\BLAST\u output\u file.txt 有人能帮我吗?谢谢你刚刚写了一个简单的bash脚本 for i in *.txt; do

我尝试了
ls*.fasta | parallel--gnu“awk'{print$1}'>{/}.outputfile.txt”
它并没有产生我所需要的结果。我有48个文件,我需要提取这些字段并将它们输出到48个独立的文件中

我可以很好地运行它,但我必须对每个文件逐一执行:
awk'{print$1}'BLAST\u output\u file.txt>ID\BLAST\u output\u file.txt


有人能帮我吗?谢谢你刚刚写了一个简单的bash脚本

for i in *.txt; do
    awk '{print $1}' $i > $i.id.blast.out.txt
done

你能试试下面的吗

awk '{if(FILENAME!=prev){close(prev)};print $1;prev=FILENAME}'  *.fasta > output_all_file
如果您需要不同的输出文件(从您的尝试中看到):

添加{}:

ls *.fasta | parallel --gnu "awk '{print $1}' {} > {/.}.outputfile.txt"

您不需要使用for循环,您可以在awk本身中读取文件。看到这一次太确定了,很高兴它帮助你看到了这一链接一次,通过查看你的个人资料,你几乎无法选择任何答案作为正确答案,所以请在某个时候给出你的问题,当你有足够的答案时,试着选择其中一个作为正确答案。这似乎不适用于我的另一个文件。本质上是一个表,其中每个字符串由5个空格分隔。当我在一个文件上运行awk时,它能够很好地抓取第一列。当我在.tab文件上运行上述脚本时,它只是重新复制了该文件。为什么它在并行运行时会这样做?感谢“awk”部分是否独立工作(即没有GNU并行)?如果没有,那就先让它起作用。同时发布一个MCVE。这让帮助你变得容易多了。这对我所做的一切都有效。再次感谢!实际上,在10个左右的文件之后,我得到一个错误,即打开的文件太多。@user3105519,实际上我已经通过关闭文件来处理它了
ls *.fasta | parallel --gnu "awk '{print $1}' {} > {/.}.outputfile.txt"