9.2-grep命令(中)

-n 'root' 過濾出帶有某個關鍵詞的行,並輸出行號

[root@evan-01 grep]# grep -n 'root' passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
[root@evan-01 grep]# 

-nv 'nologin' 過濾出不帶有某個關鍵詞的行,並輸出行號

[root@evan-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
20:evan1:x:1000:1000::/home/evan1:/bin/bash
21:evan2:x:1001:1001::/home/evan2:/bin/bash
22:user1:x:1002:1002::/home/user1:/bin/bash
23:user2:x:1004:1005::/home/user2:/bin/bash
25:user4:x:1007:1007::/home/user4:/bin/bash
[root@evan-01 grep]#

-n '[0-9]' 過濾出所有包含數字的行,並輸出行號

[root@evan-01 grep]# grep -n '[0-9]' /etc/inittab
9:# multi-user.target: analogous to runlevel 3
10:# graphical.target: analogous to runlevel 5
[root@evan-01 grep]#

-nv '[0-9]' 過濾出所有不包含數字的行,並輸出行號

[root@evan-01 grep]# grep -nv '[0-9]' /etc/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:#
11:#
12:# To view current default target, run:
13:# systemctl get-default
14:#
15:# To set a default target, run:
16:# systemctl set-default TARGET.target
17:#
[root@evan-01 grep]# 

可以看到第9和第10行沒有了

-n '^#' 過濾出所有以 # 開頭的行,並輸出行號
查看以 # 開頭的行,並輸出行號

[root@evan-01 grep]# grep -n '^#' /etc/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:#
9:# multi-user.target: analogous to runlevel 3
10:# graphical.target: analogous to runlevel 5
11:#
12:# To view current default target, run:
13:# systemctl get-default
14:#
15:# To set a default target, run:
16:# systemctl set-default TARGET.target
17:#
[root@evan-01 grep]#

我們發現這個文件所有行中都有 # ,接下來,我們 cp 一份這個文件,然後對它進行一下編輯

[root@evan-01 grep]# cp /etc/inittab .
[root@evan-01 grep]# ls
inittab  passwd
[root@evan-01 grep]# vi inittab

手動添加一行,並保存退出。
在這裏插入圖片描述

[root@evan-01 grep]# grep -n '^#' /etc/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:#
9:# multi-user.target: analogous to runlevel 3
10:# graphical.target: analogous to runlevel 5
11:#
12:# To view current default target, run:
13:# systemctl get-default
14:#
15:# To set a default target, run:
16:# systemctl set-default TARGET.target
17:#
[root@evan-01 grep]#

我們發現,我們最後添加的那行是沒有展示的

過濾掉以 # 開頭的行,並輸出行號

[root@evan-01 grep]# grep -nv '^#' inittab
18:ahcbabvjjs3761738183
[root@evan-01 grep]# 

過濾掉所有空行和以 # 開頭的行

[root@evan-01 grep]# grep -v '^#' inittab | grep -v '^$'
ahcbabvjjs3761738183
[root@evan-01 grep]# 

[^0-9] 匹配非方括號裏面的內容
[^] 匹配非方括號裏面的內容。就是:只要不是方括號裏面的內容都打印出來。
把非數字的內容呈現出來

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

在這裏插入圖片描述符合條件的字符均已加粗,只有數字沒變粗,表明沒篩選沒有符合條件

^[^0-9] 匹配非方括號裏面的內容開頭的所有字符
^[^] 匹配非方括號裏面的內容開頭的所有字符。 只要不是方括號裏面的內容所開頭的,都打印出來。
把非數字開頭的內容呈現出來

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

在這裏插入圖片描述符合條件的字符均已加粗

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章