awkはファイルを1行ずつ繰り返し、値を使用してその行の値を含むcsvファイルから行を取得します。

awkはファイルを1行ずつ繰り返し、値を使用してその行の値を含むcsvファイルから行を取得します。

2つのファイルがあり、最初のファイルは次のとおりです。

値.txt

[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]

データ.csv

"username","email"
"user","[email protected]"
"user1","[email protected]"
"user2","[email protected]"
"user4","[email protected]"
"user456","[email protected]"
"user789","[email protected]"
"user5","[email protected]"
"user","[email protected]"
"user5","[email protected]"
"user","[email protected]"

出力が次のようになります。

"user","[email protected]"
"user1","[email protected]"
"user2","[email protected]"
"user4","[email protected]"
"user5","[email protected]"
"user5","[email protected]"

どうして:

awk -F',' '$2 ~ /[email protected]/ {print $0}' data.csv > test1.csv

これにより、以下を含む新しいファイルtest1.csvが作成されます。

"user5","[email protected]"

[email protected]ファイルを繰り返し、value.txt行に置き換える方法がわかりません。

ベストアンサー1

awk -F, '
  NR==FNR{ a["\""$1"\""]; next }
  $2 in a
' values.txt data.csv

最初の入力ファイル:各フィールドを配列に保存し、a各キーにプレフィックス/サフィックスを追加します"。録音を続けてくださいnext

2番目の入力ファイル:2番目のフィールドが配列にあるかどうかをテストしますa。条件がtrueの場合、デフォルトのアクションはレコードを印刷することです。

おすすめ記事