find、xargs、grep、压缩 - Linux 三重奏
最编程
2024-04-28 14:46:25
...
grep、awk、sed
grep
Global search REgular expression and Print out the line
作用:文本搜索工具,根据用户指定的”模式“对目标文件逐行进行匹配检查并打印出匹配的行。
模式:由正则表达式及文本字符所编写的过滤条件
格式:grep[options]pattern[file…]
其中pattern如果需要对模式进行转换,需要使用""
,如果不需要进行转换,则使用‘’
或者“”
都可以。
option
--color=auto 对匹配到的行添加颜色,默认添加grep是别名
-v 取反
-i 不区分大小写
-n 查找的内容增加行号
-c 打印匹配到的行数
-o 只显示匹配到的文字
-q 静默模式,什么都不输出,可通过此命令判断是否查到关键字
常与echo $? 结合(echo $?:打印上一命令执行结果,有结果为0,无结果为非0。
grep -q 'user' passwd
echo $?
0
-A # after 向下显示#行
-B # before 向上显示#行
—C # context 上下分别显示#行
-e 或者
grep -e 'user' -e 'root' passwd
-E 扩展正则表达式
-F 不使用正则表达式
-r 递归
-w 匹配整个单词
正则表达式元字符
字符匹配
- . 任意单个字符
- [] 匹配指定范围内的任意单个字符 [0-9] [a-z] [A-Z]
- [^] 取反
- [:upper:] 大写字母
- [:lower:] 小写字母
- [:alnum:] 字母和数字
- [:alpha:] 大小写字母
- [:digit:] 数字
- [:black:] 空白
- [:punct:] 标点符号
匹配次数
- * 表示任意次数
- .* 任意字符任意次数
- \? 表示0或者1次
- \+ 至少一次
- \{n\} 表示n次
- \{m,n\} 最少m次,最多n次
- \{n,\} 至少n次
- \{,n\} 至多n次
位置锚定
- ^ 开头
-
$
结尾 -
^$
空行
grep -v "^#" /etc/ssh/sshd_config |grep -v "^$"
显示不以#开头并且不是空行
分组
grep "\(c\|C\)at" a 其中的\全是转义字符
向后引用
grep "\(c\|C\)at.*\1" a
- \1 前面第一组(括号)出现的内容匹配完成之后再后面在出现一次
- \2 第二组
扩展则表达式
grep -E "(c|C)at" a
- 与正则表达式的区别是不需要转义