Linux 三剑客
grep
: 负责过滤,可以对文本、命令结果进行过滤
sed
: 流编辑器,文本编辑工具
awk
:Linux的文本报告生成器(格式化文件),Linux上是gwak(GNU/AWK)
😈 grep
命令介绍
Global search REgular expression and Print ouy the line.
作用:文本搜索工具,根据用户指定的模式(过滤条件)对目标文件进行匹配检查,打印匹配到的行。
模式:由正则表达式的元符号
及文本符号
所编写出来的过滤条件
。
grep [options] [pattern] file
-i
:「 ignorecase」 | 忽略大小写-o
: 仅显示匹配到的字符串本身-v
: 「–imvert-match」 | 显示不能被模式匹配到的行(取反)-E
: 支持使用扩展的正则表达式元字符-q
: 「–quiet,–sitent」 | 静默模式,即不输出任何信息。
举几个🌰
👾 空行篇
grep ^$ a.txt # 查找所有空行
grep ^$ a.txt -n # 查找所有空行并显示行号
grep ^$ a.txt -c # 查找总共有多少空行
grep ^$ a.txt -n -v # 查找不是空行的内容并显示行号
grep "." a.txt # 查找所有的非空行
👾 开头结尾篇
grep ^# grep.txt -n # 查找以#开头的行(一般是注释行)
grep ^$ a.txt v | grep ^# grep.txt -v -n # 查找除了井号开头以及空行的行
grep -n "\.$" a.txt # 查找以`.`结尾的行 ,注意要使用转义字符`\`
grep -n "/bin/bash$" /etc/passwd # 查找使用/bin/bash的用户
👾 行内内容
grep ".s" a.txt # 查找文件中的出现的?s
grep "i*" a.txt # 查找文件中的i
grep ".*e" a.txt # 走到e结束
grep [a-z] a.txt # 找出文件中所有的小写字母
grep [a-zA-Z0-9] a.txt # 找出文件中所有的大小写字母和数字
👾 扩展正则表达式
grep -E "i+" a.txt # 查找所有包含i的行
grep -E "c{4,}" a.txt # 查找至少4个连续的c
grep -E "c{4,6}" a.txt # 查找最少4个最多6个连续的c
👾 小括号
执行下面命令创建一个b.txt文件方便下面练习:
touch b.txt && echo -e “good\ngooood\ngoooooooooood\ngooooooooooooooooooooood\ngad\nglad” >> b.txt
grep -En "g(oo|la)d" b.txt # 查找`good`与`glad`这两个单词并显示行号
👾 find
命令
find
命令是查找文档文件夹下文件信息的,可以进行遍历查找符合要求的文件,这里不做扩展,使用到请自查
find /home/jim -mtime 1 # 查找最近两天创建的文件
在Linux上所有文件的行都是以
$
结尾,可以使用cat -en filename
进行验证
📜 附录:正则表达式
基本正则表达式
符号 | 名称 | 含义 |
---|---|---|
^ | 尖角符 | 以…开头的行,比如^Jim 表示以Jim开头的行 |
$ | 美元符 | 以…结尾的行,比如Jim$ 表示以Jim结尾的行 |
^$ | 组合符 | 表示空行 |
. | 句号符 | 匹配有且只有一个字符的行,不能匹配空行 |
\ | 转义字符 | 让特殊含义的字符,现出原形,还原本意,比如\. 表示小数点 |
* | 星号 | 匹配前一个字符(连续出现)0次或1次以上,重复0次代表空,即匹配所有内容 |
.* | 组合符 | 匹配所有内容 |
^.* | 组合符 | 匹配任意多个字符开头的内容 |
.*$ | 组合符 | 匹配任意多个字符结尾的内容 |
[abc] | 匹配集合内任意一个字符,a或b或c,也可以写成[a-c] | |
[ \^abc] | 取反操作 | 匹配除了^后面的任意字符之外的字符,不可以是a或b或c,^表示取反操作 |
扩展正则表达式
扩展正则表达式必须配合
grep -E
使用才会生效
符号 | 名称 | 含义 |
---|---|---|
+ | 加号 | 匹配前一个字符一次或多次 |
[:?]+ | 中括号+加号 | 表示匹配括号内的: 或? 一次或多次 |
? | 问号 | 匹配前一个字符0次或1次 |
| | 竖杠(管道符) | 表示「或者」,同时过滤多个字符串 |
() | 括号 | 分组过滤,括号内的内容为一个整体 |
a{n,m } | 花括号 | 匹配前一个字符a至少n次,至多m次 |
a{n} | 花括号,单参数 | 匹配前一个字符正好n次 |
a{n,} | 花括号缺参数 | 匹配前一个字符至少n次 |
a{,m} | 花括号缺参数 | 表示匹配前一个字符最多m次 |