【发布时间】:2026-02-25 11:30:01
【问题描述】:
我在互联网上对此进行了广泛搜索,但没有找到太多细节。
问题描述:
我正在使用 aix 服务器。
我有一个 pattern.txt 文件,其中包含 100 个客户的 customer_id,格式如下:
160471231
765082023
75635713
797649756
8011688321
803056646
我有一个目录(/home/aswin/temp),其中包含多个用竖线(|)分隔的文件(1.txt、2.txt、3.txt 等)。样本格式:
797649756|1001|123270361|797649756|O|2017-09-04 23:59:59|10|123769473 803056646|1001|123345418|1237330|O|1999-02-13 00:00:00|4|1235092 64600123|1001|123885297|1239127|O|2001-08-19 00:00:00|10|1233872 75635713|1001|123644701|75635713|C|2006-11-30 00:00:00|11|12355753 424346821|1001|123471924|12329388|O|1988-05-04 00:00:00|15|123351096 427253285|1001|123179704|12358099|C|2012-05-10 18:00:00|7|12352893
我需要做什么从目录中所有文件的所有文件中搜索 pattern.txt 文件中的所有字符串,在每个文件的第一列中,并列出每个文件名和匹配数。因此,如果同一行有超过 1 个匹配项,则应计为 1 个。
所以输出应该是这样的(只计算第一列中的匹配项):
1.txt:4
2.txt:3
3.txt:2
4.txt:5
到目前为止我做了什么:
cd /home/aswin/temp
grep -srcFf ./pattern.txt * /dev/null >> logfile.txt
这是以所需格式提供输出,但它会搜索所有列中的字符串,而不仅仅是第一列。所以输出数量比预期的要多得多。
请帮忙。
【问题讨论】: