目录
-
grep介绍
Linux中的grep命令是强大的文本搜索工具,使用正则表达式搜索文本,并将匹配到的行打印出来
-
grep语法
grep [-acinv] [--color=auto] 搜寻内容 目标文本文件
选项与参数
-
-a 将二进制文件当作文本文件搜索
-
-c 统计搜索到的次数
-
-i 忽略大小写
-
-n 输出行号
-
-v 输出没有搜索到内容的行
-
--color=auto 找到的搜索内容上加颜色
-
准备工作
打开终端窗口,依次输入以下命令:$ cd base
$ mkdir text-grep
在当前目录下新建文件夹text-grep,作为本实验的工作目录。
再将file.txt和longfile.txt复制到工作目录:$ cp file.txt longfile.txt text-grep
$ cd text-grep
-
示例
#在longfile.txt搜索含有“梦”的句子并输出行号:$ grep -n 梦 longfile.txt
1:——此开卷第一回也。作者自云:曾历过一番梦幻之后,故将真事隐去,而借
11:中间用“梦”“幻”等字,却是此书本旨,兼寓提醒阅者之意。
91:定睛看时,只见烈日炎炎,芭蕉冉冉,梦中之事便忘了一半。又见奶母抱了英莲
#反向查找,在longfile.txt中搜索不含"日"的句子并输出行号:$ grep -nv 日 longfile.txt
1:——此开卷第一回也。作者自云:曾历过一番梦幻之后,故将真事隐去,而借
2:通灵说此《石头记》一书也,故曰“甄士隐”云云。但书中所记何事何人?自己又
4:见识皆出我之上。我堂堂须眉诚不若彼裙钗,我实愧则有馀,悔又无益,大无可如
7:告天下;知我之负罪固多,然闺阁中历历有人,万不可因我之不肖,自护己短,一
........................省略.................................
-
正则匹配
正则匹配规则
-
^ 以此开头的行获得匹配
-
$ 以此结尾的行获得匹配
-
\< 匹配包含以此开头的单词的行
-
\> 匹配包含以此结尾的单词的行
-
[ ] 单个字符;如[A] 即A符合要求
-
[ - ] 范围 ;如[A-Z]即A-Z之间有一个匹配的
-
. 所有的单个字符
-
? 匹配0到1次。
-
* 匹配0到多次。
-
+ 匹配1到多次。
-
{n} 匹配n次。
-
{n,} 匹配n到多次。
-
{n,m} 匹配n到m次。
-
\ 忽略正则表达式中特殊字符的原有含义
示例
$ grep -n [a-g] file.txt
2:Windows
3:Mac OS
$ grep ^W file.txt
Windows
-
实验任务
在命令后添加"> 文件名"将内容输出到文件中。
任务一:
输出longfile.txt所有包含"石头"的行并输出行号,输出到文件grep_1.txt(40分)。
grep -n 石头 longfile.txt > grep_1.txt
任务二:
统计longfile.txt中"作者"出现的次数,输出到文件grep_2.txt(30分)。
grep -c 作者 longfile.txt > grep_2.txt
任务三:
统计file.txt所有包含以OS结尾的单词的行,输出到文件grep_3.txt(30分)。
grep 'OS\>' file.txt > grep_3.txt