如何让grep在其输出中匹配行之前显示文件名?
当前回答
如果你有-H和-n选项可用(man grep是你的朋友):
$ cat file
foo
bar
foobar
$ grep -H foo file
file:foo
file:foobar
$ grep -Hn foo file
file:1:foo
file:3:foobar
选项:
- h, with-filename 打印每个匹配的文件名。当有时,这是默认值 一个以上的文件 搜索。 - n,行编号 在输出的每一行前面加上以1为基础的行号 输入文件。(- n是 由POSIX指定。)
-H是GNU扩展,但-n是POSIX指定的
其他回答
不需要什么技巧。
grep --with-filename 'pattern' file
带行号:
grep -n --with-filename 'pattern' file
如果你有-H和-n选项可用(man grep是你的朋友):
$ cat file
foo
bar
foobar
$ grep -H foo file
file:foo
file:foobar
$ grep -Hn foo file
file:1:foo
file:3:foobar
选项:
- h, with-filename 打印每个匹配的文件名。当有时,这是默认值 一个以上的文件 搜索。 - n,行编号 在输出的每一行前面加上以1为基础的行号 输入文件。(- n是 由POSIX指定。)
-H是GNU扩展,但-n是POSIX指定的
这是对以前解决方案的轻微修改。我的例子在bash脚本中寻找stderr重定向: Grep '2>' $(查找。- name“* .bash”)
试试这个小技巧,让grep认为它正在处理多个文件,这样它就会显示文件名:
grep 'pattern' file /dev/null
也可以得到行号:
grep -n 'pattern' file /dev/null
grep 'search this' *.txt
对我来说,搜索所有的.txt文件很有用(当然,输入你自己的搜索值)。
推荐文章
- 在Windows中有像GREP这样的模式匹配实用程序吗?
- 如何从命令行将每两行合并为一行?
- 如何从命令行通过mysql运行一个查询?
- 在创建守护进程时执行双fork的原因是什么?
- 匹配前后的Grep字符?
- (grep)正则表达式匹配非ascii字符?
- 如何从另一个文件A中删除文件B中出现的行?
- 对以制表符分隔的文件进行排序
- 如何使用查找命令从列表中查找所有具有扩展名的文件?
- 如何将文件指针(file * fp)转换为文件描述符(int fd)?
- 在Bash中获取日期(比当前时间早一天)
- Linux: kill后台任务
- 在OSX中永久设置PATH环境变量
- PowerShell等价于grep -f
- 如何在C程序中获取当前目录?