我有两个文件,文件A可能在文件B中,我想计算文件A中的每一行,它在文件B中出现的次数。例如:
档案A:
GAGGACAGACTACTAAAGCC
CTTGCCGCAGATTATCAGAG
CCAGCTTGATGTGTCCTGTG
TGATAGGCAGTGGAACACTG
档案B:
NTCTTGAGGAAAGGACGAATCTGCGGAGGACAGACTACTAAAGCCGTTTGAGAGCTAGAACGAGCAAGTTAAGAGA
TCTTGAGGAAAGGACGAAACTCCGGAGGACAGACTACTAAAGCCGTTTTAGAGCTAGAAAGCGCAAGTTAAACGAC
NTCTTGAGGAAAGGACGAATCTGCGCTTGCCGCAGATTATCAGAGGTATGAGAGCTAGAACGAGCAAGTTAAGAGC
TCTTGAGGAAAGGACGAAAGTGCGCTTGCCGCAGATTATCAGAGGTTTTAGAGCTAGAAAGAGCAAGTTAAAATAA
GATCTAGTGGAAAGGACGATTCTCCGCTTGCCGCAGATTATCAGAGGTTGTAGAGCTAGAACTAGCAAGTGACAAG
ATCTTGAGGAAAGGACGAATCTGCGCTTGCCGCAGATTATCAGAGGTTTGAGAGCTAGAACTAGCAAGTTAATAGA
CGATCAAGTGGAAGGACGATTCTCCGTGATAGGCAGTGGAACACTGGATGTAGAGCTAGAAATAGCAAGTGAGCAG
ATCTAGAGGAAAGGACGAATCTCCGTGATAGGCAGTGGAACACTGGTATGAGAGCTAGAACTAGCAAGTTAATAGA
TCTTGAGGAAAGGACGAAACTCCGTGATAGGCAGTGGAACACTGGTTTTAGAGCTAGAAAGCGCAAGTTAAAAGAC
输出应该是文件C:
2 GAGGACAGACTACTAAAGCC
4 CTTGCCGCAGATTATCAGAG
0 CCAGCTTGATGTGTCCTGTG
3 TGATAGGCAGTGGAACACTG
我想用grep这样做,我尝试了-c,o,f的一些变体,但我似乎无法获得正确的输出。
我怎样才能做到这一点?
答案 0 :(得分:0)
试试这个
for i in `cat a`; do echo "$i `grep $i -c b`"; done
在这种情况下,如果文件A中的行在文件B的一行中多次出现,那么这将被计为一次。如果你想计算这样的事件,但没有重叠使用这个
for i in `cat a`; do printf $i; grep $i -o b | wc -l; done
也许这个变种会更快
cat b | grep "`cat a`" -o | sort | uniq -c
答案 1 :(得分:0)
loop = asyncio.ProactorEventLoop()
asyncio.set_event_loop(loop)
答案 2 :(得分:0)
用于比较文件的Linux命令:
comm FileA FileB
comm
生成三列输出。第一列包含FileA
唯一的行,第二列包含FileB
唯一的行,第三列包含两个文件共有的行。