使用grep搜索文本文件

摘要:
如果要在多个文本文件中查找字符串,可以使用grep命令。Grep在文本中搜索指定字符串。假设您正在/usr/src/linux/Documentation目录中搜索一个字符串为magic的文件:$grepmagic/usr/slc/linux/Documentation/*sysrq txt:*HowdoIenablethemagicSysRQkey?默认情况下,grep只搜索当前目录。如果此目录下有许多子目录,grep将以以下格式列出:grep:sound:Isadirectory这可能会使grep的输出难以读取。如果你忘记了,grep会一直等到程序被中断。如果您只需要更清晰的输出,请尝试fungrep。
如果您要在几个文本文件中查找一字符串,可以使用grep命令。grep在文本中搜索指定的字符串。假设您正在/usr/src/linux/Documentation目录下搜索带字符串magic的文件:
$ grep magic /usr/src/linux/Documentation/*
sysrq.txt:* How do I enable the magic SysRQ key?
sysrq.txt:* How do I use the magic SysRQ key?

其中文件sysrp.txt包含该字符串,讨论的是SysRQ的功能。默认情况下,grep只搜索当前目录。如果此目录下有许多子目录,grep会以如下形式列出:
grep: sound: Is a directory
这可能会使grep的输出难于阅读。这里有两种解决的办法:
  • 明确要求搜索子目录:grep -r
  • 或忽略子目录:grep -d skip

当然,如果预料到有许多输出,您可以通过管道将其转到less上阅读:$
grep magic /usr/src/linux/Documentation/* | less
这样,您就可以更方便地阅读。有一点要注意,您必需提供一个文件过滤方式
(搜索全部文件的话用 *)。如果您忘了,grep会一直等着,直到该程序被中断。如果您遇到了这样的情况,按 <CTRL c> ,然后再试。
下面是一些有意思的命令行参数:
  • grep -i pattern files:不区分大小写地搜索,默认情况区分大小写
  • grep -l pattern files:只列出匹配的文件名
  • grep -L pattern files:列出不匹配的文件名
  • grep -w pattern files:只匹配整个单词,而不是字符串的一部分(如匹配"magic",而不是"magical")
  • grep -C number pattern files:匹配的上下文分别显示[number]行
  • grep pattern1 | pattern2 files:显示匹配 pattern1 或 pattern2 的行
  • grep pattern1 files | grep pattern2:显示既匹配 pattern1 又匹配 pattern2 的行

这里还有些用于搜索的特殊符号:
  • /</> 分别标注单词的开始与结尾
    例如:
    • grep man * 会匹配 "Batman"、"manic"、"man"等,
    • grep '/<man' * 匹配"manic"和"man",但不是"Batman"
    • grep '/<man/>' 只匹配"man",而不是"Batman"或"manic"等其他的字符串
  • '^':指匹配的字符串在行首
  • '$':指匹配的字符串在行尾
  • 如果您不习惯命令行参数,可以试试图形界面的grep,如 reXgrep ; 这个软件提供 AND、OR、NOT 等语法,还有漂亮的按钮。如果您只是需要更清楚的输出,不妨试试 fungrep

转自:http://www.mcuos.com/viewthread.php?tid=10&extra=page%3D4

免责声明:文章转载自《使用grep搜索文本文件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇PHP模拟post提交数据方法汇总mybatis几种开发方式下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

shell命令三剑客之grep命令详解

目录 1. 通配符(globbing) 2. grep2.1 linux系统支持的三种形式的grep命令 3. 正则表达式3.1 扩展正则表达式 4. IP的正则 4.1 ip地址的类别 4.2 ip地址的正则 5. shell中的特殊字符 6. 练习 正则表达式和grep、vim、awk、sed等的关系:正则表达式是一种方法,相当于...

阿里云服务器安全设置

1、开启云盾所有服务 2、通过防火墙策略限制对外扫描行为 请您根据您的服务器操作系统,下载对应的脚本运行,运行后您的防火墙策略会封禁对外发包的行为,确保您的主机不会再出现恶意发包的情况,为您进行后续数据备份操作提供足够的时间。 Window2003的批处理文件下载地址:http://oss.aliyuncs.com/aliyunecs/windows20...

LUA中获得服务器IP

local t ={} --引入相关包local socket = require("socket") functiont.main() local a,b=pcall(t.execute); if a==false then logerror(a,b); end...

Linux grep命令 -- 三剑客老三

常用选项   -E :开启扩展(Extend)的正则表达式。   -i :忽略大小写(ignore case)。   -v :反过来(invert),只打印没有匹配的,而匹配的反而不打印。   -n :显示行号   -w :被匹配的文本只能是单词,而不能是单词中的某一部分。   -c :显示总共有多少行被匹配到了,而不是显示被匹配到的内容,注意如果同时使用...

CentOS中ps配合Kill进程的N种方法

首先,用ps查看进程,方法如下: $ ps -ef ……smx 1822 1 0 11:38 ? 00:00:49 gnome-terminalsmx 1823 1822 0 11:38 ? 00:00:00 gnome-pty-helpersmx 1824 1822 0 11:38 pts/0 00:00:02 bashsmx 1827 1 4 11...

如何过滤 adb logcat 输出

对原作者表示感谢,转自博客:http://www.otechu.me/zh/2011/12/filtering-adb-logcat-output/ 本文介绍如何在shell 命令行中过滤 adb logcat 输出的几个小技巧。 开发当中经常看到别人的 log 如洪水般瞬间刷满了屏幕,对自己有用的信息都被淹没了,影响心情也影响效率。下面是几个我所知道的过...