私はbashシェルを使用しています。 CSVファイル「A」を解析し、その文字列のCSVファイル「B」を検索してから、CSVファイルBから一致する行の最初の列の値を出力したいと思います。だから私は努力しました
while IFS=, read -r col1 name col3 col4 col5
do
echo "I got:$name|$col5"
value=`grep ${name} /tmp/accounts_created.csv | cut -d, -f${0}`
echo "value:$value \n"
done < ~/Downloads/all_data.csv
しかし、両方のファイルに一致するデータがあることを知っているにもかかわらず、何らかの理由でこれは機能しません。これを行うより良い方法はありますか?
答え1
私が理解する限り、awkだけが必要です。
awk -F, 'NR==FNR{seen[$2]=1;next} /seen[$2] ~ $0/{print $1}
' ~/Downloads/all_data.csv /tmp/accounts_created.csv