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

时间:2019-01-05 04:59:10

标签: awk sequence fasta gnu-parallel

我已经尝试过ls *.fasta | parallel --gnu "awk '{print $1}' > {/.}.outputfile.txt" 并且没有产生我需要的结果。我有48个文件,我需要在其中提取这些字段并将其输出为48个独立文件。

我可以很好地运行它,但是我必须为每个文件一个一个地做:awk '{print $1}' BLAST_output_file.txt > ID_ BLAST_output_file.txt

有人可以帮我吗?谢谢

3 个答案:

答案 0 :(得分:1)

请您尝试以下。

awk '{if(FILENAME!=prev){close(prev)};print $1;prev=FILENAME}'  *.fasta > output_all_file

如果您需要使用其他输出文件(尝试时看到):

awk '{if(FILENAME!=prev){close(prev)};print $1 > (FILENAME".id.blast.out.txt");prev=FILENAME}'  *.fasta

答案 1 :(得分:1)

添加{}:

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

答案 2 :(得分:-1)

只需编写一个简单的bash脚本

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