gawk 处理目录中的多个文件

gawk 处理目录中的多个文件

我在一个文件夹中有多个文本文件,我想通过 gawk 处理它们,而不是单独处理它们,我是否可以一次处理它们而不将它们合并到 1 .txt 文件中

脚本示例 -

"C:\cygwin64\bin\gawk.exe" -F: 'FNR==NR{a[$1]=$2;next} $2 in a{print $1 FS a[$2]}' email.phone.txt username.email.txt > username.phone.txt

使用示例 -

email.phone.txt - 包含:

[email protected]:phoneexample

username.email.txt - 包含:

user1:[email protected]
user131:[email protected]

预期输出:

user1:phoneexample
user131:phoneexample

但不是处理其中之一

email.phone.txt

文件我可以处理一个充满它们的目录吗?

例子 -

C:/directory/folder/example

包含:

file1.txt
file2.txt
file3.txt
...

答案1

所以你有了将用户文件映射到电子邮件,以及一些将电子邮件映射到电话的文件。是的,awk 可以做到这一点:只需处理 user:phone 文件第一的

gawk -F: -v OFS=: '
    NR == FNR  {user[$2] = $1; next} 
    $1 in user {print user[$1], $2}
' user.email.txt email.* > user.phone.txt

相关内容