非常に長いログファイルがありますが、最初の10行だけを検索するようにgrepに要求できますか?
非常に長いログファイルがありますが、最初の10行だけを検索するようにgrepに要求できますか?
回答:
パイプの魔法。
head -10 log.txt | grep <whatever>
head log.txt | grep <whatever>
-l
オプションを使用するときにこれを行う方法はありますか?最初の5文字がであるすべてのファイルをリストしますRIFFD
。
Googleでこれを見つけた人のためにn
、複数のファイルの最初の行を検索する必要がありましたが、一致するファイル名のみを印刷しました。使った
gawk 'FNR>10 {nextfile} /pattern/ { print FILENAME ; nextfile }' filenames
はFNR..nextfile
、10行が見つかるとファイルの処理を停止します。//..{}
上の印刷ファイル名と移動するたびに指定されたファイルを示し、最大で最初のマッチ。他のプログラムのためにファイル名を引用するには、
gawk 'FNR>10 {nextfile} /pattern/ { print "\"" FILENAME "\"" ; nextfile }' filenames
FNR=1
最初の行だけを検索します。ありがとう!
find ./path -type -f -exec awk 'FNR>10 {nextfile} /pattern/ { print FILENAME ; nextfile }' '{}' +
-type f
またはawk
、なしで単一のプロセスに使用します|
:
awk '/your_regexp/ && NR < 11' INPUTFILE
各行で、your_regexp
一致し、レコード(行)の数が11未満の場合、デフォルトのアクション(入力行を出力する)を実行します。
または使用sed
:
sed -n '/your_regexp/p;10q' INPUTFILE
正規表現をチェックして行を出力し(-n
入力を出力しないことを意味します。それ以外の場合はデフォルトです)、10行目の直後に終了します。
awk '{ if ( NR <= 10 ) { if( $0 ~ "YOUR_REGEXP") { print } } else { exit; } }' textfile
します。
awkish
。2xifs
そして1xelse
、アクションステートメントを必要としないコマンドでは、アホになります。weinbergerとkernighan cry ...
とともにプログラムを使用するいくつかのオプションがありますgrep
。私の意見では最も簡単なのは、使用することhead
です:
head -n10 filename | grep ...
head
(-n
オプションを使用して)最初の10行を出力し、その出力をにパイプできますgrep
。
head
使用しました。:)-n 10
head
次の行を使用できます。
head -n 10 /path/to/file | grep [...]
head -10 log.txt | grep -A 2 -B 2 pattern_to_search
-A 2
:パターンの前に2行を印刷します。
-B 2
:パターンの後に2行印刷します。
head -10 log.txt # read the first 10 lines of the file.
-C 2
と、同じことをします-A 2 -B 2
grep -m6 "string" cov.txt
これは最初の6行のみを検索します string
grep -A 10 <パターン>
これは、パターンとその次の10行を取得するためのものです。これは既知のパターンでのみ機能します。既知のパターンがない場合は、「ヘッド」の提案を使用してください。
head
:someCmd | head -10