我有兩個(gè)CSV文件(以|
分隔),我正試圖在bash腳本中進(jìn)行比較。文件A有5列;文件B有1列。我目前沒(méi)有任何標(biāo)題,我打算稍后添加。文件1中的第5列包含一些與文件2中的第1列匹配的條目。我想最終得到兩個(gè)新文件:文件C,它有來(lái)自文件A的第1-5列,其中文件A第1列和文件B第1列匹配;具有文件A中第1-5列的文件D,其中文件A第1列和文件B第1列不匹配。
文件A中的示例文本:
CT240021313|2024-02-04 00:00:02|CT|1.2.345.6
AB123|2024-02-01 11:22:33|MR|7.8.98.102
PDQ987|2024-02-04 8:50:11|XR|1.23.45.6
PA7531|2024-02-03 9:34:52|CT|6.3.489
文件B中的示例文本:
1.2.345.6
6.3.489
預(yù)期輸出文件C:
CT240021313|2024-02-04 00:00:02|CT|1.2.345.6
PA7531|2024-02-03 9:34:52|CT|6.3.489
預(yù)期輸出文件D:
AB123|2024-02-01 11:22:33|MR|7.8.98.102
PDQ987|2024-02-04 8:50:11|XR|1.23.45.6
我在awk上嘗試了幾種變體,但幾乎沒(méi)有成功,甚至找不到匹配的。然而,我可以導(dǎo)出文件并導(dǎo)入到Excel中,并突出顯示文件A第5列和文件B第1列中的匹配值,它會(huì)找到許多匹配項(xiàng)。我目前擁有的,基本上返回文件A中的每一行:
awk 'NR==FNR{a[$0];next !($0 in a)' file_a.csv file_b.csv > file_c.csv
Try
你已經(jīng)走上了正軌,但訂單混亂了。在這里,我們以另一種方式指定輸入文件。首先,我們將
B
讀取到內(nèi)存中,然后根據(jù)之前在B
中看到的值對(duì)A
進(jìn)行分區(qū)。