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