Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

Text search tool: grep egrep fgrep

2025-01-17 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Database >

Share

Shulou(Shulou.com)06/01 Report--

grep名称来自于g/re/p(globally search a regular expression and print,以正规表示法进行全域查找以及打印),是一个最初用于Unix操作系统的命令行工具。在给出文件列表或标准输入后,grep会对匹配一个或多个正则表达式的文本进行搜索,并只输出匹配(或者不匹配)的行或文本。

命令名称:grep, egrep, fgrep

命令作用:print lines matching a pattern

命令用法:grep [OPTIONS] PATTERN [FILE...]

grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

参数选项:-v 反向选取

-o 仅显示匹配的字符串,而非字符串所在的行

-i 忽略字符串大小写

-E 支持只用扩展正则表达式

-A n 显示匹配到字符串之后的n行

-B n 显示匹配到字符串之前的n行

-C n 显示匹配到字符串前后的n行

--color 高亮显示匹配到的字符串

常见字符集:

[:space:]所以空白字符[:punct:]所以标点符号[:lower:]所有小写字母[:upper:]所以大写字母[:digit:]所有数字[:alnum:]所有大小写字母和数字[:alpha:]所有大小写字母

文件名通配:

*任意长度的任意字符?匹配任意单个字符[]匹配指定范围内的任意单个字符[^]匹配指定范围以外的任意单个字符

基本正则表达式:

字符匹配.匹配任意单个字符[]匹配指定范围内的任意单个字符[^]匹配指定范围外的任意单个字符次数匹配*前面的字符可以出现任意次\?前面的字符出现0次或者1次\{m\}前面的字符出现m次\{m,n\}前面的字符出现n次~m次\{m,\}前面的字符至少出现m次\{0,n\}前面的字符至多出现n次.*任意长度的任意字符位置锚定^行首锚定,写在模式的最左侧$行尾锚定,写在模式的最右侧^$匹配空行\词尾锚定,出现于单词右侧分组\(\)匹配一个分组\1引用第1个括号所匹配到的内容,而非模式本身\2

引用第2个括号所匹配到的内容,而非模式本

扩展正则表达式:

字符匹配.匹配任意单个字符[]匹配指定范围内的任意单个字符[^]匹配指定范围外的任意单个字符次数匹配*前面的字符可以出现任意次?前面的字符出现0次或者1次+前面的字符至少出现1次{m}前面的字符出现m次{m,n}前面的字符出现n次~m次{m,}前面的字符至少出现m次{0,n}前面的字符至多出现n次锚定^行首锚定,写在模式的最左侧$行尾锚定,写在模式的最右侧\,\b词尾锚定,出现于单词右侧^$匹配空行分组()匹配一个分组\1引用第1个括号所匹配到的内容,而非模式本身

grep练习:

1、显示/proc/meminfo文件中以大写或小写S开头的行;

[root@DB2 ~]# grep -i '^s' /proc/meminfo

[root@DB2 ~]# grep -E '^(S|s)' /proc/meminfo

[root@DB2 ~]# grep '^[S|s]' /proc/meminfo

2、显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户;

[root@DB2 ~]# grep -v "/sbin/nologin$" /etc/passwd | cut -d: -f1

3、显示/etc/passwd文件中其默认shell为/bin/bash并且ID号最大的用户;

[root@DB2 ~]# grep '/bin/bash' /etc/passwd | sort -t: -k3 -n | tail -1 | cut -d: -f1

4、找出/etc/passwd文件中的一位数或两位数;

[root@DB2 ~]# grep '\' /etc/passwd

[root@DB2 ~]# grep '\' /etc/passwd

5、显示/boot/grub/grub.conf中以至少一个空白字符开头的行;

[root@DB2 ~]# grep '^[[:space:]]\{1,\}' /boot/grub/grub.conf

6、显示/etc/rc.d/rc.sysinit文件中,以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行;

[root@DB2 ~]# grep --color '^#[[:space:]]\{1,\}[^[:space:]]\{1,\}' /etc/rc.d/rc.sysinit

7、找出netstat -tan命令执行结果中以'LISTEN'结尾的行;

[root@DB2 ~]# netstat -tan | grep --color 'LISTEN[[:space:]]*$'

8、添加用户bash, testbash, basher, nologin(SHELL为/sbin/nologin),而找出当前系统上其用户名和默认shell相同的用户;

[root@DB2 ~]# grep --color '^\([[:alnum:]]\{1,\}\):.*\1$' /etc/passwd

9、扩展题:新建一个文本文件,假设有如下内容:

He like his lover.

He love his lover.

He like his liker.

He love his liker.

找出其中最后一个单词是由此前某单词加r构成的行。

cat

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 0

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report