我有一个脚本,我在Linux中使用得非常好,但是现在我已经切换到Mac,脚本仍在运行,但行为略有不同。
这是一个用于统计学生参加部门职能的脚本。我们使用便携式条形码扫描仪扫描其ID,然后在每个日期将所有扫描保存在一个csv文件中。
我过去使用grep -m1 $ID csvfolder/* | wc -l
来计算他们的ID显示的文件数量。-m1是必要的,以确保他们不会获得“额外的信用”,以便在同样的事件。
但是,当我在Mac中使用相同的命令时,它会在找到第一个文件中的第一个匹配项时退出grep。因此,如果学生出现在4个文件中,wc -l
仍会返回1
我如何(不安装GNU版本)模拟此功能?
答案 0 :(得分:6)
我没有使用Mac OS X进行测试,但以下是Posix标准的afaik:
grep -l "$ID" csvfolder/* | wc -l
grep
将打印包含匹配项的每个文件的名称。这应该与Gnu grep一样。
答案 1 :(得分:0)
您也可以使用awk
执行此任务:
awk -v id="$ID" '$0 ~ id{print 1; exit}' csvfolder/* | wc -l