我有一个文件(maillog中)是这样的:壳:从FILE1获取一行内容FILE2
Feb 22 23:53:39 info postfix[102]: connect from APVLDPDF01[...
Feb 22 23:53:39 info postfix[101]: BA1D7805A1: client=APVLDPDF01[...
Feb 22 23:53:39 info postfix[103]: BA1D7805A1: message-id
Feb 22 23:53:39 info opendkim[139]: BA1D7805A1: DKIM-Signature field added
Feb 22 23:53:39 info postfix[763]: ED6F3805B9: to=<[email protected]>, relay...
Feb 22 23:53:39 info postfix[348]: ED6F3805B9: removed
Feb 22 23:53:39 info postfix[348]: BA1D7805A1: from=<[email protected]>,...
Feb 22 23:53:39 info postfix[102]: disconnect from APVLDPDF01...
Feb 22 23:53:39 info postfix[842]: 59AE0805B4: to=<[email protected]>,status=sent
Feb 22 23:53:39 info postfix[348]: 59AE0805B4: removed
Feb 22 23:53:41 info postfix[918]: BA1D7805A1: to=<[email protected]>, status=sent
Feb 22 23:53:41 info postfix[348]: BA1D7805A1: removed
和第二文件(mailids)是这样的:
6DBDD8039F:
3B15BC803B:
BA1D7805A1:
2BD19803B4:
我想得到一个包含如下内容的输出文件:
Feb 22 23:53:41 info postfix[918]: BA1D7805A1: to=<[email protected]>, status=sent
只是ID在第二个文件中存在的行,在本例中只是ID = BA1D7805A1:在文件一中。但是还有另一个条件,这条线必须是“ID = <” 这意味着只有包含“to = <”的行和文件2中的ID才可以输出。
我发现不同的解决方案,但我有一个关于性能的巨大问题。 maillog文件大小为2GB,大约10万行。 mailid文件大约有32000行。
这个过程需要太多时间,我从来没有见过。 我试着用awk和grep命令,但我没有找到最好的方法。
具体什么你尝试过这么远吗? – Mark