求助--使用grep的查找文件出处
时间:2011-03-31
来源:互联网
学习了grep之后,我有个想法,但是无法通过命令实现,请大家帮我看一看,谢谢先。
在一个文件目录下有多个文件,其中有的内容包含关键词,例如FAILED,所以想用命令列出所有包含FAILED的行以及文件出处。
more /<directory path>/*.* | grep 'FAILED'
#这个命令执行结果只可以显示出所有文件目录下包含关键词FAILED的行,但是无法列出显示行出自具体哪个文件。
more /<directory path>/*.* | grep -l 'FAILED'
#这个命令执行结果失败,报错
<stdin>
Broken Pipe
请问我是不是哪里出错了?
如果有其他方法能否告知? 谢谢。
作者: justagain 发布时间: 2011-03-31
看標題 還以為是 perl 的那個grep呢
作者: lkk2003rty 发布时间: 2011-03-31
可以试试awk: awk '/FAILED/{print $0,FILENAME}' files
作者: yinyuemi 发布时间: 2011-03-31
在一个文件目录下有多 ...
justagain 发表于 2011-03-31 13:57
grep 的输入是管道重定向过来的,它也不知来自哪个文件,所以打印出来了stdin
作者: xfoucs 发布时间: 2011-03-31
grep -l 'FAILED' *
就可以得到所有包含FAILED的文件名,但是,这样又无法知道这个文件里面具体有哪几行是有关键词的。
初衷是为了一个命令实现如下结果
xxxxFAILEDxxxx 出自 XXX文件
xxxxFAILEDxxxx 出自 XXX文件
……
就是一个界面里面显示行的内容和文件来源
不知道是否可能实现。
作者: justagain 发布时间: 2011-03-31
grep -l 'FAILED' *
就可以得到所有包含FAILED的文件名,但是,这 ...
justagain 发表于 2011-03-31 14:17
mygrep.pl
- #!/usr/bin/perl -w
- use strict;
-
- die "no arguments!\n" unless @ARGV;
- my $keywords="FAILED";
- foreach(@ARGV)
- {
- my $filename=$_;
- open FH,$_;
- my $line=0;
- while(<FH>)
- {
- chomp;
- $line++;
- while(/$keywords/g)
- {
- print "<$_> in file:<$filename> line:<$line>\n";
- }
- }
- }
作者: xfoucs 发布时间: 2011-03-31
- #!usr/bin/perl
- use strict;
- use warnings;
- use File::Find;
-
-
- sub wanted
- {
- my $file = $_;
- open FH,"<", $file or die $!;
- while (<FH>)
- {
- if (/FAILED/)
- {
- print $_,"\t",$File::Find::name,"\n";
- }
- }
- }
-
- find(\&wanted, qw[directory path]);
作者: Cu_fans 发布时间: 2011-03-31
作者: justagain 发布时间: 2011-03-31
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28