我有两个包含以下数据的文件
文件1:
6100540301SD01 ON5330399520191104906781 2019110390678151053303995ACK 20191105
6100540301SD01 ON0403096420191104225695 2019110322569551004030964A 20191105
6005260301SD01 46460045792019110490678911059455 2019110490678951000755694BE3 1120191105
6005260301SD01 46460045792019110490679616020577 2019110490679651000764053BDJDEDH 1620191105
文件2:
20191104
20191105
20191106
由于file1是定宽文件,所以97到104字符位置的字符串是日期。我想按位置从 97 到 104 提取字符串,并检查它是否存在于 file2 中。如果它存在,我想将整行复制到 file3。如果不存在,我想将它复制到 file4。
我已经创建了 C++ 程序,但是处理 file1 需要很长时间,而这将近 50 万条记录。因此,如果有任何 awk/sed
脚本可以提供帮助,请分享。
最佳答案
awk
助您一臂之力!
$ awk 'NR==FNR {dates[$0]; next}
{print > (substr($0,97,104) in dates?"file3":"file4")}' file2 file1
关于linux - 如何测试 File2 中是否存在 File1 每一行的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58756798/