一致の合計数を制御できるが、各ファイルの最初の一致で停止する 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 ではグローバル一致カウントとして扱います。
ベストアンサー1
したがって、 を使用する場合grep
、オプションは-l, --files-with-matches
。
find
、またはシェル スクリプトに関するすべての回答はawk
質問から外れています。