Answers:
管道的魔力;
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
在不需要动作语句的命令中会产生错误。温伯格和克尼根大哭……
与一起使用程序,您有几种选择grep
。我认为最简单的方法是使用head
:
head -n10 filename | grep ...
head
将输出前10行(使用该-n
选项),然后您可以将该输出通过管道传输到grep
。
head
都采用-n 10
(包括我在内)没有意识到,head
由默认显示只有10行。:)
grep "pattern" <(head -n 10 filename)
您可以使用以下行:
head -n 10 /path/to/file | grep [...]
head -10 log.txt | grep -A 2 -B 2 pattern_to_search
-A 2
:在图案前打印两行。
-B 2
:在图案后打印两行。
head -10 log.txt # read the first 10 lines of the file.
-C 2
将与-A 2 -B 2
grep -A 10 <模式>
这是抓取图案以及图案之后的下10行。这仅适用于已知模式,如果您没有已知模式,请使用“ head”建议。
head
:someCmd | head -10