Как я могу использовать awk (первое поле каждого файла) для нескольких файлов и получить результат для каждого входного файла - PullRequest
0 голосов
/ 05 января 2019

я пробовал 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 голосов
/ 05 января 2019

Не могли бы вы попробовать следующее.

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
0 голосов
/ 05 января 2019

Добавить {}:

ls *.fasta | parallel --gnu "awk '{print $1}' {} > {/.}.outputfile.txt"
0 голосов
/ 05 января 2019

Только что написал простой скрипт bash

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