使用多种模式从文件名中提取第一个日期

问题描述 投票:0回答:1

我有一个每行包含 1 个字符串的输入文件

input.txt(实际有25k行)

one
two
three

然后我有一个包含许多文件的目录(实际上有50个文件)

2022-04-01.csv

stuff;one;more_stuff
stuff;one;more_stuff

2022-04-02.csv

stuff;one;more_stuff
stuff;two;more_stuff

2022-04-03.csv

stuff;two;more_stuff
stuff;tree;more_stuff
stuff;tree;more_stuff

我需要提取每个模式出现的最早日期。所以在这种情况下的输出将是

one:2022-04-01.csv
two:2022-02-02.csv
three:2022-04-03.csv

我可以使用

grep -l one *.csv
获取模式出现的唯一文件列表,但不适用于多个模式,也不适用于单个最早日期。如果我只能获取每个模式出现的文件列表,那么我可以手动提取我认为的最早日期,但我确定必须有 1 个班轮来完成这一切?

bash awk grep
1个回答
0
投票

使用任何 awk(未设置):

awk '
    BEGIN { FS=OFS=";" }
    NR==FNR {
        vals[$0]
        next
    }
    $2 in vals {
        print $2, FILENAME
        delete vals[$2]
    }
' input.txt *.csv
© www.soinside.com 2019 - 2024. All rights reserved.