[email protected] status
[email protected] status
[email protected] status
[email protected] unique_user_id
[email protected] unique_user_id
[email protected] unique_user_id
我的示例代码:
While read c1.f1 c2.f1 c1.f2 c2.f2;
Do
Echo “$c2.f2 $c2.f1”
Done<paste data.csv data2.csv
此代码将打印两个文件的第二列中的值,但在此之前我需要某种验证,例如添加“if 语句”以在打印第二列之前检查两个文件中第一列中用户的电子邮件 ID 是否相等. 我只想通过映射电子邮件 ID 来打印 unique_user_id 和状态 我可以这样做吗?或者我可以用 awk 命令做得更好吗?最好的方法是什么?谢谢
这是我想出的一个快速脚本:
#!/bin/bash
# using your method
paste data.csv data2.csv | while read file1_email file1_value file2_email file2_value
do
if [ "$file1_email" == "$file2_email" ]
then
echo "$file1_email, $file1_value, $file2_value"
fi
done
echo "------------------------------------------"
# this is mine
while read file1_email file1_value
do
file2_counter=$(grep -c $file1_email data2.csv)
if [ $file2_counter -gt 0 ]
then
file2_line=$(grep $file1_email data2.csv)
file2_value=$(echo $file2_line | awk '{print $2}')
echo "$file1_email, $file1_value, $file2_value"
fi
done <data.csv
paste
命令不会对任何内容进行排序,只会在读取数据时显示数据。如果你使用我的方法,它会遍历 data.csv 的每一行。但是 data.csv 必须是“干净的”,因为read
假设有 2 个字段。第一个是电子邮件,第二个是值。您应该查看 data.csv 内容。
然后,它会不时检查从 data.csv 读取的电子邮件是否存在于 data2.csv 中。如果不是,什么也不做(没有else
到if
)。但是,如果您无论如何都想做某事,请添加一个else
和一些代码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句