Reputation: 697
I am trying to search text from one file (named as temporal3
) in another file (names as map
) using shell's grep
function. Here is an small part of these files:
temporal3
:
TACTATATTACTGGAAAAACCATCAAGCTAGACCA
AATATGTCCCAGTTGAAGAGAATTATCATTTTGAG
AGAATTATCATTTTGAGATTGCTATCGTTCACCAA
AATATGTCCCAGTTGAAGAGAATTATCATTTTGAG
CTAGACCAATATAATATGTCCCAGTTGAAGAGAAT
AGATTGCTATCGTTCACCAAATACTGGCAAATAAT
map
:
CTTCTGAATCCGCCAGGAGTTCTACCTCGATCAAATAATGACACTTTGCACTTGATTTTTCATCAAGAAAGTCAGTCAAATAGTTCCAGAAATGGACACAA
ATCTCACATCCCTTACTATATTACTGGAAAAACCATCAAGCTAGACCAATATAATATATCCCAGTTGAAGAGAATTATCATTTTGAGATTGCTATCGTTCA
TCACATCCCTTACTATATTACTGGAAAAACCATCAAGCTAGACCAATATAATATGTCCCAGTTGAAGAGAATTATCATTTTGAGATTGCTATCGTTCACCA
AGACCAATATAATATGTCCCAGTTGAAGAGAATTATCATTTTGAGATTGCTATCGTTCACCAAATACTGGCAAATAATCTCCTTCTGAATCCGCCAGGAGT
CCAGTTGAAGAGAATTATCATTTTGAGATTGCTATCGTTCACCAAATACTGGCAAATAATCTCCTTCTGAATCCGCCAGGAGTTCTACCTCGATCAAATAA
GAGATTCATCTCACATCCCTTACTATATTACTGGAAAAACCATCAAGCTAGACCAATATAATATGTCCCAGTTGAAGAGAATTATCATTTTGAGATTGCTA
AGACCAATATAATATGTCCCAGTTGAAGAGAATTATCATTTTGAGATTGCTATCGTTCACCAAATACTGGCAAATAATCTCCTTCTGAATCCGCCAGGAGT
AACCATCAAGCTAGACCAATATAATATGTCCCAGTTGAAGAGAATTATCATTTTGAGATTGCTATCGTTCACCAAATACTGGCAAATAATCTCCTTCTGAA
TTCATCTCACATCCCTTACTATATTACTGGAAAAACCATCAAGCTAGACCAATATAATATGTCCCAGTTGAAGAGAATTATCATTTTGAGATTGCTATCGT
ATAGCGAGATTCATCTCGCATCCCTTACTATATTACTGGAAAAACCATCAAGCTAGACCAATATAATATGTCCCAGTTGAAGAGAATTATCATTTTGAGAT
The real map
file is a hugh one (~20Gb) so I cannot handle it with R. What I want to do is:
temporal3
, I want to get all lines in map
that contain it. temporal3
, I want to get all lines in map
that contain it. temporal3
, I want to get all lines in map
that contain it.I tried grep -Ff temporal3 map
but it did not work! This is really surprising for me. Any idea about why this does not work? Any suggestions to get this task done? Many thanks!
Upvotes: 2
Views: 160
Reputation: 697
Thanks @anubhava ! This is what I want. I also changed it a little bit:
#!/bin/bash
> output
while read -r line; do
echo $line >> output
grep -Fn "$line" map >> output
done < temporal3
Upvotes: 1
Reputation: 784878
You can use:
#!/bin/bash
> output
while read -r line; do
grep -F "$line" map >> output
done < temporal3
Upvotes: 1