如何在多个文件上使用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"