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

ユーザー名.email.txt - 含める:

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

予想出力:

user1:phoneexample
user131:phoneexample

しかし、それらのうちの1人とも取引しません

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

関連情報