是否有任何 grep 选项可以让我控制匹配的总数,但在每个文件的第一次匹配时停止?
例子:
如果我这样做,grep -ri --include '*.coffee' 're' .
我会得到:
./app.coffee:express = require 'express'
./app.coffee:passport = require 'passport'
./app.coffee:BrowserIDStrategy = require('passport-browserid').Strategy
./app.coffee:app = express()
./config.coffee: session_secret: 'nyan cat'
如果我这样做grep -ri -m2 --include '*.coffee' 're' .
,我会得到这个:
./app.coffee:config = require './config'
./app.coffee:passport = require 'passport'
但是,我真正想要的是这个输出:
./app.coffee:express = require 'express'
./config.coffee: session_secret: 'nyan cat'
这样做-m1
不起作用,因为我得到了这个grep -ri -m1 --include '*.coffee' 're' .
./app.coffee:express = require 'express'
尝试不使用 grep 例如这find . -name '*.coffee' -exec awk '/re/ {print;exit}' {} \;
产生了:
config = require './config'
session_secret: 'nyan cat'
更新:如下所述,GNU grep-m
选项将每个文件视为计数,而-m
对于 BSD grep 将其视为全局匹配计数