我想问如何在包含文件名的某个文件中进行 grep,grep 的条件将来自另一个文件。例子:
fileA.txt 包含:
newFile0001_1573001341083_123_0.txt
newFile0002_1573001341207_134_0.txt
newFile0003_1573415111000_251_0.txt
newFile0004_1999999999991_238_0.txt
newFile0005_1573002061581_305_0.txt
fileB.txt 包含:
870752450724347692,2019-11-11 00:12:17,1573411337,1573407737,1573414937
870423450725349173,2019-11-11 00:21:08,1573411868,1573408268,1573415468
868909450732354559,2019-11-11 00:56:43,1573414003,1573410403,1573417603
其中第二列是日期/时间,
第三列是纪元中的日期/时间,
第四列是日期/时间 -1 小时(纪元),
第五列是日期/时间 + 1 小时(纪元)。
-
如何在 fileA.txt 中 grep (获取每个匹配的 newFile0000_XXXXXXXXXX000_000_0.txt)
使用第四列(下限)和第五列(上限)作为 fileB.txt 中每一行的范围?
因此,从示例中,应根据 fileB.txt 第二个条目获取 fileA.txt 第三个条目。
答案1
使用awk
:
awk -F, 'NR==FNR { myArray[$0]=substr($0,13,10); next }
{ for (file in myArray) {
if (myArray[file]>=$4 && myArray[file]<=$5)
{ print file; delete myArray[file] }
}
}' fileA.txt fileB.txt
使用多个分隔符的替代方案。将第一个代码块更改为:
NR==FNR { myArray[$0] = $2/1000; next }
像这样运行它:
awk '...awk-script...' FS=_ fileA.txt FS=, fileB.txt