フォルダに複数のテキストファイルがあり、個別に処理するのではなく、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