fgrep及正则表达式,Linux相识相知

常说Linux上有文本管理的三剑客,grep、sed和awk,本文就grep做出详细的讲述,并引出正则表达式。

【Linux相识相知】文本管理工科具之grep\egrep\fgrep及正则表明式,egrepfgrep

常说Linux上有文本管理的三杀手,grep、sed和awk,本文就grep做出详细的叙说,并引出正则表明式。

 

 

grep

NAME:打印模式匹配的行
SYNOPISIS:
       grep [OPTIONS] PATTERN [FILE...]
       grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
常用选项:
--color=auto:对匹配到的文本着色后进行高亮显示,默认已被别名alias grep='grep --color=auto'
-i:忽略字符的大小写
-o:仅显示匹配到的字符串本身
-v:显示不能被模式匹配到的行
-E:支持使用扩展的正则表达式
-q:静默模式,即不输出任何信息
-A #:显示被模式匹配的行及其后#行
-B #:显示被模式匹配的行及其前#行
-C #:显示被模式匹配的行及其前后各#行

 

举例1:匹配/etc/passwd下有frank的行

[[email protected] tmp]# grep "frank" /etc/passwd
frank:x:1000:1000:frank:/home/frank:/bin/bash

 

比方2:相配/etc/passwd下有frank的行,忽略大小写

[[email protected] tmp]# grep -i "frank" /etc/passwd
frank:x:1000:1000:frank:/home/frank:/bin/bash
Frank:x:1001:1001::/home/Frank:/bin/bash

 

举个例子来讲三:相称/etc/passwd下无法被bash相称的行

[[email protected] tmp]# grep -v "bash" /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
......
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin

 

举例4:仅仅相称/etc/passwd下的frank,忽略大小写

[[email protected] tmp]# grep -oi "frank" /etc/passwd
frank
frank
frank
Frank
Frank

 

举例伍:静默情势相称含有frank的行

[[email protected] tmp]# grep -q "frank" /etc/passwd
[[email protected] tmp]# 

 

比方陆:相配/etc/passwd下富含ftp的行及其后3行

[[email protected] tmp]# grep -A 3 "ftp" /etc/passwd
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-bus-proxy:x:999:998:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin

 

例如七:相称/etc/passwd下富含ftp的行及其前三行

[[email protected] tmp]# grep -B 3 "ftp" /etc/passwd
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

 

举个例子8:匹配/etc/passwd下富含ftp的行及其前后各2行

[[email protected] tmp]# grep -C 2 "ftp" /etc/passwd
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-bus-proxy:x:999:998:systemd Bus Proxy:/:/sbin/nologin

 

grep

NAME:打印模式匹配的行
SYNOPISIS:
       grep [OPTIONS] PATTERN [FILE...]
       grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
常用选项:
--color=auto:对匹配到的文本着色后进行高亮显示,默认已被别名alias grep='grep --color=auto'
-i:忽略字符的大小写
-o:仅显示匹配到的字符串本身
-v:显示不能被模式匹配到的行
-E:支持使用扩展的正则表达式
-q:静默模式,即不输出任何信息
-A #:显示被模式匹配的行及其后#行
-B #:显示被模式匹配的行及其前#行
-C #:显示被模式匹配的行及其前后各#行

 

举例1:匹配/etc/passwd下有frank的行

[root@localhost tmp]# grep "frank" /etc/passwd
frank:x:1000:1000:frank:/home/frank:/bin/bash

 

举个例子2:相称/etc/passwd下有frank的行,忽略大小写

[root@localhost tmp]# grep -i "frank" /etc/passwd
frank:x:1000:1000:frank:/home/frank:/bin/bash
Frank:x:1001:1001::/home/Frank:/bin/bash

 

比如来佛讲3:相配/etc/passwd下不能够被bash相称的行

[root@localhost tmp]# grep -v "bash" /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
......
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin

 

举例四:仅仅相配/etc/passwd下的frank,忽略大小写

[root@localhost tmp]# grep -oi "frank" /etc/passwd
frank
frank
frank
Frank
Frank

 

举个例子5:静默方式相配含有frank的行

[root@localhost tmp]# grep -q "frank" /etc/passwd
[root@localhost tmp]# 

 

比方陆:相配/etc/passwd下富含ftp的行及其后3行

[root@localhost tmp]# grep -A 3 "ftp" /etc/passwd
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-bus-proxy:x:999:998:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin

 

比如7:相配/etc/passwd下富含ftp的行及其前三行

[root@localhost tmp]# grep -B 3 "ftp" /etc/passwd
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

 

比如8:相配/etc/passwd下富含ftp的行及其前后各贰行

[root@localhost tmp]# grep -C 2 "ftp" /etc/passwd
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-bus-proxy:x:999:998:systemd Bus Proxy:/:/sbin/nologin

 

egrep

帮助扩展正则表明式落成类似于grep的公文过滤效果,也正是grep -E

NAME:打印模式匹配的行
SYNOPISIS:
        egrep [OPTIONS] PATTERN [FILE...]   
-i:忽略字符的大小写
-o:仅显示匹配到的字符串本身
-v:显示不能被模式匹配到的行
-q:静默模式,即不输出任何信息
-A #:显示被模式匹配的行及其后#行
-B #:显示被模式匹配的行及其前#行
-C #:显示被模式匹配的行及其前后各#行
-G:支持基本正则表达式

 

egrep

扶助扩充正则表明式落成类似于grep的文书过滤效果,也便是grep -E

NAME:打印模式匹配的行
SYNOPISIS:
        egrep [OPTIONS] PATTERN [FILE...]   
-i:忽略字符的大小写
-o:仅显示匹配到的字符串本身
-v:显示不能被模式匹配到的行
-q:静默模式,即不输出任何信息
-A #:显示被模式匹配的行及其后#行
-B #:显示被模式匹配的行及其前#行
-C #:显示被模式匹配的行及其前后各#行
-G:支持基本正则表达式

 

fgrep

fgrep寻觅字符串而不是研究相称的表达式的格局,所以援助正则表明式,当不供给要用到元字符去编写情势的时候,使用fgrep必能更加好更加快。

支持-i,-v,-o,-A,-B,-C,-p等选项

 

fgrep

fgrep寻找字符串而不是寻觅相称的表明式的形式,所以帮助正则表明式,当没有须求要用到元字符去编写情势的时候,使用fgrep必能更加好更加快。

支持-i,-v,-o,-A,-B,-C,-p等选项

 

正则表明式

Regular
Expression,正则表达式,由一类特殊字符及文件字符编写的格局,当中多少不代表其字面包车型客车意义,而是用户调节或通配作用,分为大旨正则表明式和扩展正则表达式。

主干正则表明式元字符:

字符相称

. :匹配任意单个字符;
[]:匹配指定范围内的任意单个字符;
      特殊匹配:[:digit:] 匹配任意单个数字
                        [:lower:] 匹配任意单个小写字母
                        [:upper:] 匹配任意单个大写字母
                        [:alpha:] 匹配任意单个字母
                        [:alnum:] 匹配任意单个字母或数字
                        [:punct:] 匹配任意单个符号
                        [:space:] 匹配单个空格
[^]:匹配指定范围外的任意单个字符;

 

相配次数

用在要内定其冒出的次数的字符后边,用于限制其前方字符出现的次数,私下认可专门的学业于贪婪情势

*:匹配其前面的字符任意次数:0,1,多次
      .*:匹配任意长度的任意字符
\?:匹配其前面的字符0次或者1次;
\+:匹配其前面的字符1次或者多次;
\{m\}:匹配其前面的字符m次
\{m,n\}:匹配其前面的字符至少m次,至多n次
        \{m,\}:至少m次

 

岗位锚定

^:托字符,行首锚定,用于模式的最左侧
$:行尾锚定,用于模式的最右侧

单词:非特殊字符组成的延续字符(字符串)都称呼单词

\<或\b:词首锚定,用于单词模式的左侧
\>或\b:词尾锚定,用户单词模式的右侧
\<PATTERN\>:匹配完整单词

 

分组及引用

分组:
\(\):将一个或多个字符捆绑在一起,当做一个整体进行处理
后向引用:引用前面的分组括号中的模式所匹配到的字符
分组括号中的模式匹配到的内容或被正则表达式引擎自动记录于内部的变量中:
\1:模式从左侧起,第一个左括号及与之匹配的右括号之间模式匹配到的内容
\2:模式从左侧起,第二个左括号及与之匹配的右括号之间模式匹配到的内容
以此类推

 

举例:

一.彰显/etc/passwd文件中不以/bin/bash结尾的行

[[email protected] tmp]# grep -v "/bin/bash$" /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
......
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin

2.寻找/etc/passwd文件中的两位或肆个人数字

[[email protected] tmp]# grep "\<[[:digit:]]\{2,3\}\>" /etc/passwd
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
......
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin

三.找寻etc/grub二.cfg文件中,以至少3个空白字符开端,且后边非空白字符的行;

[[email protected] tmp]# grep "^[[:space:]]\+[^[:space:]]" /etc/grub2.cfg 
  load_env
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
   set default="${saved_entry}"
  menuentry_id_option="--id"
  menuentry_id_option=""
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true

四.寻觅”netstat -tan”命令的结果中以LISTEN后跟0,一或多个空白结尾的行

[[email protected] tmp]# netstat -tan | grep  "LISTEN[[:space:]]*$"
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp6       0      0 :::111                  :::*                    LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 ::1:631                 :::*                    LISTEN     
tcp6       0      0 ::1:25                  :::*                    LISTEN 

 

扩张正则表明式元字符:

字符相称

. :匹配任意单个字符;
[]:匹配指定范围内的任意单个字符;
      特殊匹配:[:digit:] 匹配任意单个数字
               [:lower:] 匹配任意单个小写字母
               [:upper:] 匹配任意单个大写字母
               [:alpha:] 匹配任意单个字母
               [:alnum:] 匹配任意单个字母或数字
               [:punct:] 匹配任意单个符号
               [:space:] 匹配单个空格
[^]:匹配指定范围外的任意单个字符;

 

相配次数

用在要内定其冒出的次数的字符前边,用于限制其前边字符出现的次数,私下认可职业于贪婪方式。

*:匹配其前面的字符任意次数:0,1,多次
   .*:匹配任意长度的任意字符
?:匹配其前面的字符0次或者1次;
+:匹配其前面的字符1次或者多次;
{m}:匹配其前面的字符m次
{m,n}:匹配其前面的字符至少m次,至多n次
   {m,}:至少m次

 

职位锚定

^:托字符,行首锚定,用于模式的最左侧
$:行尾锚定,用于模式的最右侧

单词:非特殊字符组成的连天字符(字符串)都称呼单词

\<或\b:词首锚定,用于单词模式的左侧
\>或\b:词尾锚定,用户单词模式的右侧
\<PATTERN\>:匹配完整单词

 

分组及引用

分组:
():将一个或多个字符捆绑在一起,当做一个整体进行处理
后向引用:引用前面的分组括号中的模式所匹配到的字符
分组括号中的模式匹配到的内容或被正则表达式引擎自动记录于内部的变量中:
\1:模式从左侧起,第一个左括号及与之匹配的右括号之间模式匹配到的内容
\2:模式从左侧起,第二个左括号及与之匹配的右括号之间模式匹配到的内容
以此类推

 

a|b:a或b
C|cat:C或cat
(C|c)at:cat或Cat

 

小练习

1、列出脚下系统上有着曾经报到的用户的用户名,注意:同3个用户登入数十次,则只呈现1回

图片 1who |
grep -o “^\<[[:alpha:]]*” | uniq View Code

贰、抽取最终登入到当前系统的用户的相干消息

图片 2id `who
| tail -1 | grep -o “^\<[[:alpha:]]*”` View Code

三.抽取当前系统上被用户作为其默许shell的最多的充裕shell

图片 3cut -d:
-f7 /etc/passwd | uniq -c | sort -n | tail -1 | cut -d’ ‘ -f7 View Code

四.将/etc/passd中的第13个字段设置最大的后十个用户的音信全体给为大写保存至/tmp/maxuser.txt文件中

图片 4[[email protected]
~]# sort -t: -k3 -n /etc/passwd | tail -10 | tr ‘a-z’ ‘A-Z’ &>
/tmp/maxuser.txt View Code

伍.抽取当前主机的IP地址

图片 5ifconfig
| grep -Eo
“([1-9]|[1-9][1-9]|1[0-9][0-9]|2[0-5][0-4])\.([0-9]|[1-9][1-9]|1[0-9][0-9]|2[0-5][0-5])\.([0-9]|[1-9][1-9]|1[0-9][0-9]|2[0-5][0-5])\.([1-9]|[1-9][1-9]|1[0-9][0-9]|2[0-5][0-4])[[:space:]]”
|grep -v “127.0.0.1” 或者 ifconfig | grep
“[[:space:]*]\<inet\>” | cut -d’ ‘ -f10 | grep -v
“127.0.0.1” View Code

陆.列出/etc目录下有所已.conf结尾的公文的公文名,并将其名字调换为大写后保存至/tmp/etc.conf文件中

图片 6find /etc
-name “*.conf” | egrep -o “[^/][^/]*$” | tr ‘a-z’ ‘A-Z’ >
/tmp/etc.test View Code

柒.来得/var目录下一流子目录或文件的总的数量

图片 7ls /etc/
| wc -l View Code

⑧.抽取/etc/group第多少个字段数值最小的10个组的名字

图片 8sort -t:
-k3 -n /etc/group | head -10 | cut -d: -f1 View Code

玖.将/etc/fstab和/etc/issue文件的剧情统1为同贰个内容后保存至/tmp/etc.test文件中

图片 9cat
/etc/issue /etc/fstab | tee /tmp/etc.test &> /dev/null View Code

10.出示/proc/meminfo文件中以大写恐怕小写S起初的行,用二种办法

图片 10[[email protected]
home]# egrep “^[sS]” /proc/meminfo
[[email protected]
home]# egrep -i “^s” /proc/meminfo View Code

1壹.展现/etc/passwd文件中其默许shell为非/sbin/nologin的用户

图片 11[[email protected]
home]# grep -v “/sbin/nologin” /etc/passwd View Code

12.展现/etc/passwd文件中其私下认可shell为/bin/bash的用户

图片 12[[email protected]
home]# grep “/bin/bash” /etc/passwd View Code

一三.搜索/etc/passwd文件中的一人或两位数

图片 13[[email protected]
/]# egrep “\<[[:digit:]]{1,2}\>” /etc/passwd View Code

1四.体现/boot/grub2/grup.cfg中至少3个空白字符伊始的行

图片 14[[email protected]
/]# egrep “^[[:space:]]+[^[:space:]]” /boot/grub2/grub.cfg
View Code

一5.显示/etc/rc.d/rc.local文件中以#始发,后边跟至少二个空白字符,而后又至少2个非空白字符的行

图片 15[[email protected]
/]# egrep “^#[[:space:]]+[^[:space:]]” /etc/rc.d/rc.local #
THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES # It is highly advisable
to create own systemd services or udev rules # to run scripts during
boot instead of using this file. # In contrast to previous versions due
to parallel execution during boot # this script will NOT be run after
all other services. # Please note that you must run ‘chmod +x
/etc/rc.d/rc.local’ to ensure # that this script will be executed
during boot. View Code

16.打出netstat -tan命令实施结果以’LISTEN’后跟空白字符结尾的行

图片 16[[email protected]
/]# netstat -tan | egrep “LISTEN[[:space:]]+” tcp 0 0 0.0.0.0:111
0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0
127.0.0.1:631 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp6 0 0 :::111 :::* LISTEN tcp6 0 0 :::22 :::* LISTEN tcp6 0 0
::1:631 :::* LISTEN tcp6 0 0 ::1:25 :::* LISTEN View Code

1七.增多用户bash,testbash,basher,nologin(此一个用户的shell为/sbin/nologin),而后找寻脚下系统上其用户名和暗中认可shell一样的用户的新闻

图片 17[[email protected]
/]# useradd bash
[[email protected]
/]# useradd testbash
[[email protected]
/]# useradd basher
[[email protected]
/]# useradd -s /sbin/nologin nologin
[[email protected]
/]# egrep “^(\<[a-z]+\>).*\1$” /etc/passwd
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt bash:x:2004:2004::/home/bash:/bin/bash
nologin:x:2007:2007::/home/nologin:/sbin/nologin View Code

 

常说Linux上有文本管理的三徘徊花,grep、sed和awk,本文就grep做出详细的…

正则表明式

Regular
Expression,正则表达式,由1类特殊字符及文件字符编写的格局,当中有些不代表其字面包车型客车含义,而是用户调节或通配功用,分为大旨正则表达式和扩充正则表明式。

主导正则表达式元字符:

字符相配

. :匹配任意单个字符;
[]:匹配指定范围内的任意单个字符;
      特殊匹配:[:digit:] 匹配任意单个数字
                        [:lower:] 匹配任意单个小写字母
                        [:upper:] 匹配任意单个大写字母
                        [:alpha:] 匹配任意单个字母
                        [:alnum:] 匹配任意单个字母或数字
                        [:punct:] 匹配任意单个符号
                        [:space:] 匹配单个空格
[^]:匹配指定范围外的任意单个字符;

 

至极次数

用在要钦命其现出的次数的字符前面,用于限制其前方字符出现的次数,暗中同意职业于贪婪方式

*:匹配其前面的字符任意次数:0,1,多次
      .*:匹配任意长度的任意字符
\?:匹配其前面的字符0次或者1次;
\+:匹配其前面的字符1次或者多次;
\{m\}:匹配其前面的字符m次
\{m,n\}:匹配其前面的字符至少m次,至多n次
        \{m,\}:至少m次

 

岗位锚定

^:托字符,行首锚定,用于模式的最左侧
$:行尾锚定,用于模式的最右侧

单词:非特殊字符组成的接连字符(字符串)都称为单词

\<或\b:词首锚定,用于单词模式的左侧
\>或\b:词尾锚定,用户单词模式的右侧
\<PATTERN\>:匹配完整单词

 

分组及引用

分组:
\(\):将一个或多个字符捆绑在一起,当做一个整体进行处理
后向引用:引用前面的分组括号中的模式所匹配到的字符
分组括号中的模式匹配到的内容或被正则表达式引擎自动记录于内部的变量中:
\1:模式从左侧起,第一个左括号及与之匹配的右括号之间模式匹配到的内容
\2:模式从左侧起,第二个左括号及与之匹配的右括号之间模式匹配到的内容
以此类推

 

举例:

一.展现/etc/passwd文件中不以/bin/bash结尾的行

[root@localhost tmp]# grep -v "/bin/bash$" /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
......
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin

贰.找寻/etc/passwd文件中的两位或3位数字

[root@localhost tmp]# grep "\<[[:digit:]]\{2,3\}\>" /etc/passwd
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
......
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin

三.寻找etc/grub二.cfg文件中,以致少三个空白字符起先,且后边非空白字符的行;

[root@localhost tmp]# grep "^[[:space:]]\+[^[:space:]]" /etc/grub2.cfg 
  load_env
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
   set default="${saved_entry}"
  menuentry_id_option="--id"
  menuentry_id_option=""
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true

四.寻觅”netstat -tan”命令的结果中以LISTEN后跟0,1或两个空白结尾的行

[root@localhost tmp]# netstat -tan | grep  "LISTEN[[:space:]]*$"
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp6       0      0 :::111                  :::*                    LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 ::1:631                 :::*                    LISTEN     
tcp6       0      0 ::1:25                  :::*                    LISTEN 

 

庞大正则表明式元字符:

字符相配

. :匹配任意单个字符;
[]:匹配指定范围内的任意单个字符;
      特殊匹配:[:digit:] 匹配任意单个数字
               [:lower:] 匹配任意单个小写字母
               [:upper:] 匹配任意单个大写字母
               [:alpha:] 匹配任意单个字母
               [:alnum:] 匹配任意单个字母或数字
               [:punct:] 匹配任意单个符号
               [:space:] 匹配单个空格
[^]:匹配指定范围外的任意单个字符;

 

同盟次数

用在要钦命其出现的次数的字符前边,用于限制其前边字符出现的次数,暗中认可职业于贪婪格局。

*:匹配其前面的字符任意次数:0,1,多次
   .*:匹配任意长度的任意字符
?:匹配其前面的字符0次或者1次;
+:匹配其前面的字符1次或者多次;
{m}:匹配其前面的字符m次
{m,n}:匹配其前面的字符至少m次,至多n次
   {m,}:至少m次

 

职位锚定

^:托字符,行首锚定,用于模式的最左侧
$:行尾锚定,用于模式的最右侧

单词:非特殊字符组成的连接字符(字符串)都称为单词

\<或\b:词首锚定,用于单词模式的左侧
\>或\b:词尾锚定,用户单词模式的右侧
\<PATTERN\>:匹配完整单词

 

分组及引用

分组:
():将一个或多个字符捆绑在一起,当做一个整体进行处理
后向引用:引用前面的分组括号中的模式所匹配到的字符
分组括号中的模式匹配到的内容或被正则表达式引擎自动记录于内部的变量中:
\1:模式从左侧起,第一个左括号及与之匹配的右括号之间模式匹配到的内容
\2:模式从左侧起,第二个左括号及与之匹配的右括号之间模式匹配到的内容
以此类推

 

a|b:a或b
C|cat:C或cat
(C|c)at:cat或Cat

 

小练习

1、列出当下系统上全体曾经报到的用户的用户名,注意:同一个用户登陆数13遍,则只呈现一次

图片 18图片 19

who | grep -o  "^\<[[:alpha:]]*" |  uniq

View Code

二、抽出最终登录到当前系统的用户的连锁音讯

图片 20图片 21

id `who | tail -1 | grep -o  "^\<[[:alpha:]]*"`

View Code

三.抽取当前系统上被用户作为其默许shell的最多的不胜shell

图片 22图片 23

cut -d: -f7 /etc/passwd | uniq -c | sort -n | tail -1 | cut -d' ' -f7

View Code

四.将/etc/passd中的第五个字段设置最大的后十二个用户的消息全体给为大写保存至/tmp/maxuser.txt文件中

图片 24图片 25

[root@localhost ~]# sort -t: -k3 -n /etc/passwd | tail -10 | tr 'a-z' 'A-Z'  &>  /tmp/maxuser.txt

View Code

伍.抽取当前主机的IP地址

图片 26图片 27

ifconfig | grep -Eo "([1-9]|[1-9][1-9]|1[0-9][0-9]|2[0-5][0-4])\.([0-9]|[1-9][1-9]|1[0-9][0-9]|2[0-5][0-5])\.([0-9]|[1-9][1-9]|1[0-9][0-9]|2[0-5][0-5])\.([1-9]|[1-9][1-9]|1[0-9][0-9]|2[0-5][0-4])[[:space:]]" |grep -v "127.0.0.1"

或者
ifconfig | grep "[[:space:]*]\<inet\>" |  cut -d' ' -f10 | grep -v "127.0.0.1"

View Code

6.列出/etc目录下有所已.conf结尾的公文的文件名,并将其名字转变为大写后保存至/tmp/etc.conf文件中

图片 28图片 29

find  /etc  -name  "*.conf" | egrep -o "[^/][^/]*$" | tr 'a-z' 'A-Z' > /tmp/etc.test

View Code

七.展现/var目录下一流子目录或文件的总额

图片 30图片 31

ls /etc/ | wc -l

View Code

八.抽出/etc/group第多个字段数值最小的13个组的名字

图片 32图片 33

sort -t: -k3 -n /etc/group | head -10 | cut -d: -f1

View Code

玖.将/etc/fstab和/etc/issue文件的始末统一为同多少个内容后保存至/tmp/etc.test文件中

图片 34图片 35

cat /etc/issue  /etc/fstab | tee /tmp/etc.test  &> /dev/null

View Code

拾.来得/proc/meminfo文件中以大写也许小写S起始的行,用三种办法

图片 36图片 37

[root@localhost home]# egrep "^[sS]" /proc/meminfo
[root@localhost home]# egrep  -i "^s" /proc/meminfo 

View Code

1一.展现/etc/passwd文件中其私下认可shell为非/sbin/nologin的用户

图片 38图片 39

[root@localhost home]# grep -v "/sbin/nologin"  /etc/passwd

View Code

12.彰显/etc/passwd文件中其私下认可shell为/bin/bash的用户

图片 40图片 41

[root@localhost home]# grep  "/bin/bash"  /etc/passwd

View Code

13.搜索/etc/passwd文件中的壹位或两位数

图片 42图片 43

[root@localhost /]# egrep "\<[[:digit:]]{1,2}\>"  /etc/passwd

View Code

1四.显得/boot/grub2/grup.cfg中最少多少个空白字符发轫的行

图片 44图片 45

[root@localhost /]# egrep "^[[:space:]]+[^[:space:]]"  /boot/grub2/grub.cfg 

View Code

一伍.展现/etc/rc.d/rc.local文件中以#初叶,前面跟至少贰个空白字符,而后又至少3个非空白字符的行

图片 46图片 47

[root@localhost /]# egrep  "^#[[:space:]]+[^[:space:]]"   /etc/rc.d/rc.local 
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

View Code

1陆.打出netstat -tan命令试行结果以’LISTEN’后跟空白字符结尾的行

图片 48图片 49

[root@localhost /]# netstat -tan | egrep "LISTEN[[:space:]]+"
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp6       0      0 :::111                  :::*                    LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 ::1:631                 :::*                    LISTEN     
tcp6       0      0 ::1:25                  :::*                    LISTEN 

View Code

一柒.增加用户bash,testbash,basher,nologin(此二个用户的shell为/sbin/nologin),而后寻觅当下系统上其用户名和私下认可shell同样的用户的新闻

图片 50图片 51

[root@localhost /]# useradd bash
[root@localhost /]# useradd testbash
[root@localhost /]# useradd basher
[root@localhost /]# useradd -s /sbin/nologin nologin
[root@localhost /]# egrep  "^(\<[a-z]+\>).*\1$"   /etc/passwd
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
bash:x:2004:2004::/home/bash:/bin/bash
nologin:x:2007:2007::/home/nologin:/sbin/nologin

View Code

 

Post Author: admin

发表评论

电子邮件地址不会被公开。 必填项已用*标注