1. 程式人生 > >7.3 9.1-9.3

7.3 9.1-9.3

sbin 特殊符號 擴展 grub init relative systemd 不包含 sin

9.1 正則介紹_grep(上)

正則是一串有規律的字符串,通常包含一些特殊符號;

grep/egrep egrepgrep的擴展,grep能實現的,egrep均能實現

grep查找文件中的關鍵字

[root@hyc-01-01 grep]# grep 'nologin' 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

[root@hyc-01-01 grep]# which grep

alias grep='grep --color=auto

' –color=auto使grep查找到的內容帶顏色顯示

/usr/bin/grep

-c 查看包含匹配項的行的總數

[root@hyc-01-01 grep]# grep -c 'nologin' passwd

15 15行包含匹配項

-n 顯示包含匹配項的行的行號

[root@hyc-01-01 grep]# grep -n 'nologin' passwd

2:bin:x:1:1:bin:/bin:/sbin/nologin

3:daemon:x:2:2:daemon:/sbin:/sbin/nologin

4:adm:x:3:4:adm:/var/adm:/sbin/nologin

5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

-I 匹配時不區分大小寫

[root@hyc-01-01 grep]# grep -in 'nologin' passwd

2:bin:x:1:1:bin:/bin:/sbin/NOLOGIN

3:daemon:x:2:2:daemon:/sbin:/sbin/nologin

4:adm:x:3:4:adm:/var/adm:/sbin/nologin

[root@hyc-01-01 grep]# grep -n 'nologin' passwd

3:daemon:x:2:2:daemon:/sbin:/sbin/nologin

4:adm:x:3:4:adm:/var/adm:/sbin/nologin

5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

不加-i參數,包含NOLOGIN的第2行不顯示

-v 將包含關鍵字nologin的行過濾掉

[root@hyc-01-01 grep]# grep -nv 'nologin' passwd

1:root:x:0:0:root:/root:/bin/bash

2:bin:x:1:1:bin:/bin:/sbin/NOLOGIN

6:sync:x:5:0:sync:/sbin:/bin/sync

7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

8:halt:x:7:0:halt:/sbin:/sbin/halt

-r 遍歷指定目錄中的所有文件,查找包含關鍵字的行並打印在屏幕上

[root@hyc-01-01 grep]# grep -r 'root' /etc/

/etc目錄下的所有文件查找包含root關鍵字的行並打印在屏幕上

/etc/grub.d/00_header:datarootdir="/usr/share" 顯示匹配行內容並顯示該行所屬的文件

/etc/grub.d/00_header:export TEXTDOMAINDIR="${datarootdir}/locale"

/etc/grub.d/00_header:if loadfont `make_system_path_relative_to_its_root "${GRUB_FONT}"` ; then

/etc/grub.d/00_header: font="`make_system_path_relative_to_its_root "${font_path}"`"

-A 過濾出包含關鍵字的行及該行後的n

[root@hyc-01-01 grep]# grep -A 2 'root' passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/NOLOGIN

daemon:x:2:2:daemon:/sbin:/sbin/nologin

--

onologinperator: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

-B 過濾出包含關鍵字的行及該行以上n

[root@hyc-01-01 grep]# grep -B 2 'root' passwd

root:x:0:0:root:/root:/bin/bash

--

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

onologinperator:x:11:0:operator:/root:/sbin/nologin

-C 過濾出包含關鍵字的行及該行的上下n

[root@hyc-01-01 grep]# grep -C 2 'root' passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/NOLOGIN

daemon:x:2:2:daemon:/sbin:/sbin/nologin

--

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

onologinperator: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

9.2 grep(中)

過濾出帶數字的行

[root@hyc-01-01 grep]# grep '[0-9]' passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/NOLOGIN

daemon:x:2:2:daemon:/sbin:/sbin/nologin

過濾出不包含數字的行

[root@hyc-01-01 grep]# grep -v '[0-9]' passwd

過濾出以#開頭的行

[root@hyc-01-01 grep]# grep -n '^#' ./inittab

1:# inittab is no longer used when using systemd.

2:#

3:# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.

4:#

5:# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target

6:#

7:# systemd uses 'targets' instead of runlevels. By default, there are two main targets:

9:# multi-user.target: analogous to runlevel 3 沒有第8

過濾出不以#開頭的行

[root@hyc-01-01 grep]# grep -nv '^#' ./inittab

8:poiaejroigjpo

過濾掉以#開頭的行

[root@hyc-01-01 grep]# grep -v '^#' ./inittab

poiaejroigjpo

%^*^%%$&*^

匹配文件中非數字的項(此時非數字項均被標紅)

[root@hyc-01-01 grep]# grep '[^0-9]' ./inittab

# inittab is no longer used when using systemd.

#

# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.

#

# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target

#

# systemd uses 'targets' instead of runlevels. By default, there are two man targets:

poiaejroigjpo

# multi-user.target: analogous to runlevel 3

# graphical.target: analogous to runlevel 5

過濾出以非數字開頭的行

[root@hyc-01-01 grep]# grep -n '^[^0-9]' inittab

1:# inittab is no longer used when using systemd.

2:#

3:# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.

4:#

5:# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target

6:#

7:# systemd uses 'targets' instead of runlevels. By default, there are two main targets:

8:poiaejroigjpo

9:# multi-user.target: analogous to runlevel 3

^[]中表示非(取反),在[]外表示開頭

9.3 grep(下)

. 表示任意一個字符

[root@hyc-01-01 grep]# grep 'r.o' passwd

root:x:0:0:root:/root:/bin/bash

dfjfjpwejraodroad

onologinperator:x:11:0:operator:/root:/sbin/nologin

[root@hyc-01-01 grep]# grep 'r.o' passwd

root:x:0:0:root:/root:/bin/bash

dfjfjpwejr.odro.d .也可以匹配到.

onologinperator:x:11:0:operator:/root:/sbin/nologin

* 表示將*左側的字符匹配0n

[root@hyc-01-01 grep]# grep 'o*o' passwd 匹配前面匹配任意個o,結尾有一個o

root:x:0:0:root:/root:/bin/bash

dfjfjpwejr.odro.d

daemon:x:2:2:daemon:/sbin:/sbin/nologin

rooooooooooot

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

bot 只有單個o

boot o左側有一個o

boot

booooot

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

.* 匹配任意的任意個字符(包括空行)

[root@hyc-01-01 grep]# grep '.*' passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/NOLOGIN

dfjfjpwejr.odro.d

daemon:x:2:2:daemon:/sbin:/sbin/nologin

rooooooooooot

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

bot

boot

booot

booooot

sync:x:5:0:sync:/sbin:/bin/sync

[root@hyc-01-01 grep]# grep 'bin.*NOLOGIN' passwd 匹配bin後跟任意個任意字符後接NOLOGIN的項

bin:x:1:1:bin:/bin:/sbin/NOLOGIN

o\{n\} 匹配出現重復n次的字母o

[root@hyc-01-01 grep]# grep 'o\{2\}' passwd 匹配字母o出現2次的項(需要\脫義)

root:x:0:0:root:/root:/bin/bash

rooooooooooot

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

boot

booot

booooot

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

onologinperator:x:11:0:operator:/root:/sbin/nologin

postfix:x:89:89::/var/spool/postfix:/sbin/nologin

匹配一個0-n個特定字符

[root@hyc-01-01 grep]# grep 'o\{0,3\}' passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/NOLOGIN

dfjfjpwejr.odro.d

daemon:x:2:2:daemon:/sbin:/sbin/nologin

rooooooooooot

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

bot

boot

booot

booooot

[root@hyc-01-01 grep]# grep -E 'o{2}' passwd grep-E參數不需要脫義符號

root:x:0:0:root:/root:/bin/bash

rooooooooooot

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

boot

booot

booooot

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

onologinperator:x:11:0:operator:/root:/sbin/nologin

[root@hyc-01-01 grep]# egrep 'o{2}' passwd 使用egrep時不需要脫義符號

root:x:0:0:root:/root:/bin/bash

rooooooooooot

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

boot

booot

booooot

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

onologinperator:x:11:0:operator:/root:/sbin/nologin

postfix:x:89:89::/var/spool/postfix:/sbin/nologin

[root@hyc-01-01 grep]# grep -E '(oo){2}' passwd 匹配2次兩個o

rooooooooooot

adm:x:3:4:adm:/var/adm:/soooobin/nologin

boooot

sync:x:5:0:sync:/sbin:/bin/syncoooo

[root@hyc-01-01 grep]# grep 'o\+o' passwd 匹配+左側的字符一次或多次

root:x:0:0:root:/root:/bin/bash

rooooooooooot

adm:x:3:4:adm:/var/adm:/soooobin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

boot

booot

boooot

[root@hyc-01-01 grep]# egrep '(oo)?t' passwd 篩選字符串oo後跟一個t的重復次數為01次的

root:x:0:0:root:/root:/bin/bash

rooooooooooot

bot

boot

booot

boooot

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

[root@hyc-01-01 grep]# egrep 'o?t' passwd 篩選字符o重復次數為01次且後跟一個t

root:x:0:0:root:/root:/bin/bash

rooooooooooot

bot

boot

booot

boooot

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

[root@hyc-01-01 grep]# grep -E 'root|nologin' passwd 匹配rootnologin

root:x:0:0:root:/root:/bin/bash

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/soooobin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin


7.3 9.1-9.3