我有以下我试图在 bash 中解决的问题。我有两个不同的文件(file1、file2),其中包含如下信息列表:
HWI-1KL104:145:C18ANACXX:5:1101:1168:2164 4 * 0 0 * * 0 0 GTGCCTGAACTGGATGCATNGACAATGGGGAACATTACATATATAATACAAGGGAAACTCAAACGTTTCCNNNNNCAAGTATTTGACAGNNNNNNNNNNNN @B@DDFFFHHHHHIHIJIJ#3AFGHHJJJJIIJJIJIIIJJJJJJJGIIJIJJJIJIJJJJIJJI=@EED#####,,5=;ADDFEEDDD############
显示的字符串代表单行。这意味着如果我这样做:
grep "HWI-1KL104:145:C18ANACXX:5:1101:1168:2164" file1
我的输出是上面的字符串。HWI- 1KL104 :145:C18ANACXX:5:1101:1168:2164代表我的线路的ID
你必须想象像这样的数百万行(大约 8GB 的 txt 文件)具有不同的 ID
我要做的是:
搜索 file1 中存在且存在于 file2 中的那些 ID
将 file2 中的匹配行保存到仅包含 ID + 以下信息的新文件中:
HWI-1KL104:145:C18ANACXX:5:1101:1196:2120 CCCCTTCTCCAGGGGACCANGTATGTTTCTCTTATGGTCCTCCTTGTTTACTAGCTTCTCTGGCAGTGAGATTGTAGGCTGGTAATCCTTTACTCNNTNNN CCCFFFFFHHHHHHJJJJJJ#4CDEEDCDDDDDC######
因此,丢弃由 4 * 0 0 * * 0 0 表示的东西(在长度方面是固定的,但在内容方面不是固定的......意思可能是 3 * 1 0 * * 0 1 等等......)。
所以我的 file1 代表我想要在 file2 中查找并保存的我的 ID 的一种“参考”。
我很难解释。我希望你明白我想做什么。
我认为 agrep
应该可以工作,但我不知道如何grep
仅在一行中获取一些信息并与另一个文件进行比较。