【发布时间】:2016-02-02 10:36:08
【问题描述】:
我正在尝试通过逐行读取第一个文件并查找第二个文件以进行匹配来比较两个 CSV 文件。使用Diff 不是一个可行的解决方案。当我对第二个文件进行 grep 时,我似乎遇到了将电子邮件地址存储为变量的问题。
#!/bin/bash
LANG=C
head -2 $1 | tail -1 | while read -r line; do
line=$( echo $line | sed 's/\n//g' )
echo $line
cat $2 | cut -d',' -f1 | grep -iF "$line"
done
变量 $line 包含文件 $2 中确实存在的电子邮件地址,但我没有得到任何结果。
我做错了什么?
文件1
Email
email@verizon.net
email@gmail.com
email@yahoo.com
文件2
email,,,,
email@verizon.net,,,,
email@gmail.com,,,,
email@yahoo.com,,,,
【问题讨论】:
-
你能发布你的整个实现吗?
-
好的。更新了帖子。这个版本只读取第一个文件的第二行,因为我知道它是匹配的。
-
可能一个简单的
awk比管道一些东西更好!看到类似的东西:Remove duplicates from text file based on second text file -
好吧,我可以做
grep -iF "$line" $2但这也行不通。因此,cut 和 cat 语句仅用于删除变量行为。 -
也许可以试试这个:#!/bin/bash cmp -s filename_1 filename_2 > /dev/null if [ $? -eq 1];那么 echo 不同 else echo 不一样 fi
标签: bash email csv variables grep