如何让grep -m1在OSX中工作

时间:2014-09-10 18:32:50

标签: linux macos bash grep

我有一个脚本,我在Linux中使用得非常好,但是现在我已经切换到Mac,脚本仍在运行,但行为略有不同。

这是一个用于统计学生参加部门职能的脚本。我们使用便携式条形码扫描仪扫描其ID,然后在每个日期将所有扫描保存在一个csv文件中。

我过去使用grep -m1 $ID csvfolder/* | wc -l 来计算他们的ID显示的文件数量。-m1是必要的,以确保他们不会获得“额外的信用”,以便在同样的事件。

但是,当我在Mac中使用相同的命令时,它会在找到第一个文件中的第一个匹配项时退出grep。因此,如果学生出现在4个文件中,wc -l仍会返回1

我如何(不安装GNU版本)模拟此功能?

2 个答案:

答案 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