[华为云在线课程][Linux文本处理工具和正则表达式][第三章文本处理三剑客之grep][学习笔记]
【摘要】 Linux中的文本处理三剑客grep 命令主要对文本的(正则表达式)行基于模式进行过滤sed stream editor,文本编辑工具awk Linux上的实现gawk,文本报告生成器 grepgrep:Global search Regular Expression and Print out the line作用:文...
Linux中的文本处理三剑客
grep 命令主要对文本的(正则表达式)行基于模式进行过滤
sed stream editor,文本编辑工具
awk Linux上的实现gawk,文本报告生成器
grep
grep:Global search Regular Expression and Print out the line
作用:文本搜索工具,根据用户指定的"模式"对目标文件逐行进行匹配检查;打印匹配到的行
模式:由正则表达式字符及文本字符所编写的过滤条件
格式:
grep [OPTION] PATTERN [FILE...]
常见选项:
-color=auto 对匹配的文本着色显示
-m # 匹配#次后停止
-v 显示不被pattern匹配到的行
-i 忽略字符大小写
-n 显示匹配的行号
-c 统计匹配的行数
-o 仅显示匹配到的字符串
-q 静默模式,不输出任何信息
-A # after,后#行
-B # before,前#行
-C # context,前后各#行
-e 实现多个选项间的逻辑or关系,如:grep -e 'cat' -e 'dog' file
-w 匹配整个单词
-E 使用ERE,相当于egrep
-F 不支持正则表达式,相当于fgrep
-f file 根据模式文件处理
-r 递归目录,但不处理软链接
-R 递归目录,但处理软链接
-a 不要忽略二进制的数据
-b 除了显示符合样式的那一行之前,标识出该行的第一个字符的编号
-s 不显示错误信息
-V 显示版本信息
-h 在显示符合样式的那一行之前,不标示该行所属的文件名称
-H 在显示符合样式的那一行之前,表示该行所属的文件名称
-G 将样式视为普通的表示法来使用
-I 列出文件内容符和指定样式的文件名称
例子:
# 查找passwd中的root
[root@localhost ~]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]# grep "USER" /etc/passwd
[root@localhost ~]# grep 'USER' /etc/passwd
[root@localhost ~]# grep whoami /etc/passwd
例子:取两个文件的相同行
[root@localhost Code]# cat a.txt
12
34
56
78
90
[root@localhost Code]# cat b.txt
56
78
90
11
22
33
[root@localhost Code]# grep -f a.txt b.txt
56
78
90
例子:分区利用率最大的值
[root@localhost Code]# df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 914472 0 914472 0% /dev
tmpfs 931500 0 931500 0% /dev/shm
tmpfs 931500 10356 921144 2% /run
tmpfs 931500 0 931500 0% /sys/fs/cgroup
/dev/mapper/centos-root 17811456 4676552 13134904 27% /
/dev/sda1 1038336 189120 849216 19% /boot
tmpfs 186304 12 186292 1% /run/user/42
tmpfs 186304 0 186304 0% /run/user/0
[root@localhost Code]# df|grep '^/dev/'
/dev/mapper/centos-root 17811456 4676552 13134904 27% /
/dev/sda1 1038336 189120 849216 19% /boot
[root@localhost Code]# df|grep '^/dev/'|tr -s " " %
/dev/mapper/centos-root%17811456%4676552%13134904%27%/
/dev/sda1%1038336%189120%849216%19%/boot
[root@localhost Code]# df|grep '^/dev/'|tr -s " " %|cut -d% -f5
27
19
[root@localhost Code]# df|grep '^/dev/'|tr -s " " %|cut -d% -f5|sort -n
19
27
[root@localhost Code]# df|grep '^/dev/'|tr -s " " %|cut -d% -f5|sort -n|tail -1
27
[root@localhost Code]# df|grep '^/dev/'|grep -oE '\<[0-9].{,3}%'
27%
19%
[root@localhost Code]# df|grep '^/dev/'|grep -oE '\<[0-9].{,3}%'|tr -d '%'
27
19
[root@localhost Code]# df|grep '^/dev/'|grep -oE '\<[0-9].{,3}%'|tr -d '%'|sort -nr
27
19
[root@localhost Code]# df|grep '^/dev/'|grep -oE '\<[0-9].{,3}%'|tr -d '%'|sort -nr |head -n1
27
[root@localhost Code]# df|grep '^/dev/'|grep -oE '\<[0-9]{,3}%'
27%
19%
[root@localhost Code]# df|grep '^/dev/'|grep -oE '\<[0-9]{,3}%'|grep -Eo '[0-9]+'
27
19
[root@localhost Code]# df|grep '^/dev/'|grep -oE '\<[0-9]{,3}%'|grep -Eo '[0-9]+'|sort -nr
27
19
[root@localhost Code]# df|grep '^/dev/'|grep -oE '\<[0-9]{,3}%'|grep -Eo '[0-9]+'|sort -nr|head -n1
27
例子:查找文件名中包含hello的文件中不包含hello的行。
[root@localhost Code]# grep -v hello *hel*
world
123
456
789
[root@localhost Code]# grep -v hello *hello*
world
123
456
789
[root@localhost Code]# grep -v world *hello*
hello
123
456
789
[root@localhost Code]# cat hello.txt
hello
world
123
456
789
例子:显示grep的版本信息
[root@localhost Code]# grep -V
grep (GNU grep) 2.20
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Mike Haertel and others, see <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>.
[root@localhost Code]# grep --version
grep (GNU grep) 2.20
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Mike Haertel and others, see <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>.
例子:
[root@localhost Code]# cat hello.txt
hello
world
123
456
789
[root@localhost Code]# grep -I xyz hello.txt
[root@localhost Code]# grep -I hello hello.txt
hello
[root@localhost Code]# grep -I 111 hello.txt
[root@localhost Code]# grep -I 1 hello.txt
123
[root@localhost Code]# grep 1 hello.txt
123
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)