我有一个巨大的数据集,比如 15 - 20 GB,它是一个制表符分隔的文件。虽然我可以在 Python 或 SQL 中执行此操作,但在 Shell 脚本中执行此操作以避免移动 csv 文件会更容易和简单
说,例如,采用管道分隔的文件输入:
----------------------------------------
Col1 | Col2 | Col3 | Col4 | Col5 | Col6
----------------------------------------
A | H1 | 123 | abcd | a1 | b1
----------------------------------------
B | H1 | 124 | abcd | a2 | b1
----------------------------------------
C | H2 | 127 | abd | a3 | b1
----------------------------------------
D | H1 | 128 | acd | a4 | b1
----------------------------------------
SQL 查询看起来像
从其中 col2='H1' 选择 Col1、Col4、Col5、Col6
输出:
--------------------------
Col1 | Col4 | Col5 | Col6
--------------------------
A | abcd | a1 | b1
--------------------------
B | abcd | a2 | b1
--------------------------
D | acd | a4 | b1
--------------------------
然后,我只需要取其中的 Col4 来做一些字符串解析并在 OutputFile1 下输出:
--------------------------------
Col1 | Col4 | Col5 | Col6 | New1
--------------------------------
A | abcd | a1 | b1 | a,b,c,d
--------------------------------
B | abcd | a2 | b1 | a,b,c,d
--------------------------------
D | acd | a4 | b1 | a,c,d
--------------------------------
Col4 是一个 URL。我需要解析 URL 参数。参考问题 -如何在 shell 脚本中解析 URL 参数
我想知道我是否还有另一个文件
文件2:
--------------
ColA | ColB |
--------------
A | abcd |
--------------
B | abcd |
--------------
D | qst |
--------------
我需要为 ColB 生成类似的解析输出。
输出文件2:
--------------
ColA | ColB | New1
--------------
A | abcd | a,b,c,d
--------------
B | abcd | a,b,c,d
--------------
D | qst | q,s,t
--------------
用于合并 OutputFile1 和 OutputFile2 的 SQL 查询将对
OutputFile1.Col1 = OutputFile2.ColA 和 OutputFile1.New1 = OutputFile2.New1
最终输出:
--------------------------------
Col1 | Col4 | Col5 | Col6 | New1
--------------------------------
A | abcd | a1 | b1 | a,b,c,d
--------------------------------
B | abcd | a2 | b1 | a,b,c,d
--------------------------------
请分享实施相同的建议。
主要限制是文件的大小。
谢谢