我需要查找文件中无效电子邮件地址的数量,基本上是包含“@”但格式不正确的任何行。 我使用它来计算有效电子邮件地址的数量:
grep -Ei '[A-Z0-9.-]+@[A-Z0-9.-]+\.[A-Z]{3}' $1 | wc -l
并计算包含@:
的行数grep -E '@' $1 | wc -l
有没有办法可以在用wc -l打印之前减去包含@的行数以及有效电子邮件的数量?
答案 0 :(得分:1)
grep
只有-c
选项来打印事件,你应该利用它而不是产生另一个进程和一个匿名管道:
grep -c '<pattern>' file.txt
要从两次搜索中减去计数,您可以使用命令替换直接减去它们:
echo $(( $(grep -c '<pattern_1>' file.txt) - $(grep -c '<pattern_2>' file.txt) ))
如果你喜欢,你也可以使用两个变量:
count_1=$(grep -c '<pattern_1>' file.txt)
count_2=$(grep -c '<pattern_2>' file.txt)
echo $(( count_1 - count_2 ))