I use the following command to match some IDs in file 1
and retrieve data stored in referencefile
.
while read -r line; do
awk -v pattern=$line -v RS=">" '$0 ~ pattern { printf(">%s", $0); }' referencefile;
done <file1 >output
I have 50 files similar to file1 stored in a directory and want to perform the above command on all those files and save the outputs as seperate files. Is there a way to achieve this in one single command like a nested loop.
reference file
>LD200FFFFFFFFFFFFFFFFFFFFSSSSSSSSS
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
SSSSSSSSSSSSSSS
>LD400HHHHHHHHHHHHHHHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
>LD311DDDDDDDDDDDDDDDDDDDDDDDDDDDDD
>LD500TTTTTTTTTTTTTTTTTTTTTTTTTTTTT
>LD100KKKKKKKKKKKKKKKKKKKKKKKKKKKKK
example file 1
LD100
LD200
LD311
expected output1.txt
>LD100KKKKKKKKKKKKKKKKKKKKKKKKKKKKK
>LD200FFFFFFFFFFFFFFFFFFFFSSSSSSSSS
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
SSSSSSSSSSSSSSS
>LD311DDDDDDDDDDDDDDDDDDDDDDDDDDDDD
example file 2
LD500
LD400
expected output2.txt
>LD500TTTTTTTTTTTTTTTTTTTTTTTTTTTTT
>LD400HHHHHHHHHHHHHHHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
RS=">"
here.grep
can't do that. – ilkkachu Jun 02 '20 at 11:40