文章目录
前言
Linux系统的三剑客一定听说过,他们分别是grep,sed和awk,下面就来详细介绍一下,这三个命令的含义和用法。
一、grep命令
含义:文本搜索工具,根据用户指定的 “模式” 对目标文本逐行进行匹配检查,打印匹配到的行。
格式
grep [选项] [匹配模式] [文件]
常用选项
-m 匹配指定次数后停止
-v 显示不被模式匹配到的行,取反
-i 忽略字符大小写
-n 显示行号
-c 统计匹配的行数
-o 仅显示匹配到的字符
-E 使用扩展正则表达式,相当于 egrep
-F 不支持正则表达式,相当于 fgrep
-r 递归目录,但不处理软链接
-R 递归目录,但处理软链接
1.查找特定字符
# 从 test.txt 文件中查找出特定字符“the”所在位置。其中“-n”表示显示行号、“-i”表示不区分大小写。
grep -n 'the' test.txt
#若反向选择,如查找不包含“the”字符的行,则需要通过 grep 命令的“-v”选项实现
grep -vn 'the' test.txt
2.利用中括号“[]”来查找集合字符
grep -n 'sh[io]rt' test.txt
#想要查找“shirt”与“short”这两个字符串时,可以发现这两个字符串均包含“sh”与“rt”。此时执行此命令即可同时查找到“shirt”与“short”这两个字符串,其中“[]”中无论有几个字符, 都仅代表一个字符,也就是说“[io]”表示匹配“i”或者“o”
grep -n 'oo' test.txt
#若要查找包含重复单个字符“oo”时,只需要执行此命令即可
grep -n '[^w]oo' test.txt
#若查找“oo”前面不是“w”的字符串,只需要通过集合字符的反向选择“[^]”来实现该目的。例如执行“grep -n‘[^w]oo’test.txt”命令表示在 test.txt 文本中查找“oo”前面不是“w”的字符串
3.查找行首“^”与行尾字符“$”
grep -n '^the' test.txt
#基础正则表达式包含两个定位元字符:“^”(行首)与“$”(行尾),如果想要查询以“the”字符串为行首的行,则可以通过“^”元字符来实现。
grep -n '^$' test.txt
#查询空白行
“^”符号在元字符集合“[]”符号内外的作用是不一样的,在“[]”符号内表示反向选择,在“[]” 符号外则代表定位行首。反之,若想查找以某一特定字符结尾的行则可以使用“$”定位符。例如,执行以下命令即可实现查询以小数点(.)结尾的行。因为小数点(.)在正则表达式中也是一个元字符,所以在这里需要用转义字符“\”将具有特殊意义的字符转化成普通字符。
4.查找任意一个字符“.”与重复字符“*”
在正则表达式中小数点(.)也是一个元字符,代表任意一个字符。例如执行以下命令就可以查找“w??d”的字符串,即共有四个字符,以 w 开头 d 结尾。
grep -n 'w..d'