目錄
練習(xí)題目:
1.只顯示/boot目錄下所有對象的實際空間(文件的大小,占用磁盤空 間),并按由小到大排序
ll -R /boot | awk '{print $5,$9}'|sort -n
2.統(tǒng)計/etc/passwd中每種shell的被使用情況
[root@ lianxi]# cat /etc/passwd | cut -d ":" -f7 | uniq -c
3.用df -Th 命令只顯示出分區(qū)和文件系統(tǒng)的類型,使用率
[root@ lianxi]# df -Th | awk '{print $1,$2,$6}'
4.統(tǒng)計 /etc/passwd中sbin這個單詞出現(xiàn)多少次
[root@ lianxi]# cat /etc/passwd | grep sbin | tr ":" "\n" | grep sbin | wc -l
思路 : 將所有以:分隔的字符全部替換為 \n 然后再統(tǒng)計有多少行,就是sbin出現(xiàn)多少次數(shù)
5.ps aux列出前五位占MEM最多的進程的命令
[root@ lianxi]# ps aux | awk '{print $2,$4,$11}' | sort -rn | head -5
6.ps aux 列出前五位占cpu最多的進程的命令
[root@ lianxi]# ps aux | awk '{print $2,$3,$11}' | sort -rn | head -5
7.只顯示網(wǎng)卡en33的ip地址
[root@ lianxi]# ip add | grep 192
8. 將 /etc/passwd文件中的名字,gid , 以及使用什么類型的shell截取出 來,并且gid>1000.
[root@ lianxi]# cat /etc/passwd | awk -F : ' $3>1000 {print $1,$3,$7}'
9.安裝好nginx統(tǒng)計出訪問次數(shù)最多的前三個ip地址,以及出現(xiàn)次數(shù)最多的 兩個狀態(tài)碼
日志格式如下:
192.168.44.130 - - [25/Feb/2022:13:19:13 +0800] GET / HTTP/1.1 200 15 - curl/7.29.0 -
200是狀態(tài)碼
192.168.44.130是ip地址
[root@ nginx]# cat access.log |awk '{print $1,$9}' | uniq -c | sort -r | head -2
############################################################################
grep命令
用途:在文件中查找并顯示包含指定字符串的行
格式:grep [選項]... 模式 目標(biāo)文件
常見選項:
-i : 查找時忽略大小寫
-v: 反轉(zhuǎn)查找,輸出與模式不相符的行
-n : 顯示符合模式要求的行號
-r : 遞歸搜索所有文件
-o : 只顯示匹配的內(nèi)容
-E : 支持更多的元字符,支持擴展正則
-A :顯示匹配內(nèi)容以及它的后面幾行內(nèi)容
-B ; 顯示匹配內(nèi)容以及它的前面幾行內(nèi)容
-C:顯示匹配內(nèi)容并且顯示他的前后幾行內(nèi)容
模式:
^...: 以什么開頭,整行以什么開頭
...$ : 以什么結(jié)尾,整行以什么結(jié)尾
模式 : 其實就是一些條件的組合,用來表達某個意思
主要是一些字符串 + 數(shù)字 + 特殊符號,組成一個模式
用來表示某個意思
############################################################################
-o 選項 --》 只顯示匹配的內(nèi)容
例:查看/etc/passwd文件里面所有的sbin
1)不加 -o時候:會將匹配內(nèi)容的那一行全部輸出出來
[root@localhost script]# cat /etc/passwd | grep "sbin"
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
halt:x:7:0:halt:/sbin:/sbin/halt
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

nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
nginx:x:997:995:Nginx web server:/var/lib/nginx:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
2)加-o的時候:只會輸出匹配的內(nèi)容
[root@localhost script]# cat /etc/passwd | grep -o "sbin"
sbin
sbin
sbin
sbin
sbin
sbin
sbin
sbin
sbin
sbin
sbin
sbin
sbin
############################################################################
-i 選項 --》 忽略大小寫,都匹配顯示出來 -n 選項 --》 給匹配的內(nèi)容加行號
[root@localhost script]# cat phone.txt | grep xiaomi
xiaomi
[root@localhost script]# cat phone.txt | grep -i xiaomi
xiaomi
XIAOMI
[root@localhost script]# cat phone.txt | grep -ni xiaomi
1:xiaomi
2:XIAOMI
############################################################################
-v 選項: 反轉(zhuǎn)查找,輸出與模式不相符的內(nèi)容
當(dāng)我們不接-v選項的時候:只會輸出匹配的內(nèi)容
[root@localhost script]# cat phone.txt | grep "xiaomi"
xiaomi
當(dāng)我們接-v選項的時候:反轉(zhuǎn)查找輸出與模式不相符的內(nèi)容
[root@localhost script]# cat phone.txt | grep -v "xiaomi"
XIAOMI
huawei
HUAWEI OPPO vivo
VIVO
apple meizu kupai
nokia
############################################################################
-r : 遞歸搜索所有文件
/lianxi/script/phone.txt:xiaomi
/lianxi/company.txt:xiaomi ghuwei tencent alibaba baidu mangguotv bytedance xiaomi
/lianxi/company.txt:xiaomi huwei tencent alibaba baidu mangguotv bytedance xiaomi
/lianxi/company.txt:xiaomi huwei tencent alibaba baidu mangguotv bytedance xiaomi
/lianxi/company.txt:xiaomi huwei tencent alibaba baidu mangguotv bytedance xiaomi
############################################################################
-A + 長度 : 顯示出匹配內(nèi)容以及它的后面幾行
[root@ script]# cat phone.txt | grep -A 3 huawei
huawei
HUAWEI OPPO vivo
VIVO
apple meizu kupai
############################################################################
B + 長度 : 顯示匹配內(nèi)容以及他的前幾行
[root@ script]# cat phone.txt | grep -B 2 huawei
xiaomi
XIAOMI
huawei
grep在匹配字符的時候,是模糊匹配
############################################################################
-C + 長度 :顯示匹配內(nèi)容并且顯示他的前后幾行內(nèi)容
[root@ script]# cat phone.txt | grep -C 2 huawei
xiaomi
XIAOMI
huawei
HUAWEI OPPO vivo
VIVO
############################################################################
-E 選項:支持更多的元字符,支持擴展正則
正則:正則表達式 --》 就是一組規(guī)則,表示出某個意思
regular --》 feng[0]
egrep = grep -E
模式采用的就是正則表達式
正則表達式就是有字符串 + 數(shù)字 + 特殊符號按照正確的規(guī)則組合而成的要來表達某個意思的公式
元字符:有特殊作用的字符
基本正則:
里面有很多常見的元字符 ^ $ [ ]
^ 以什么開頭
$ 以什么結(jié)尾
[ ] 表示集合
^$ 表示空行,一行里什么都沒有
擴展正則:
在基本正則的基礎(chǔ)上新加了很多的元字符,例如 :|表示或者
-E, ---regexp
因為grep默認支持基本正則,所以在用到擴展正則的時候要加-E
PATTERN as an regular (ERE, see below)
############################################################################
例: 查找出 以root開頭或者feng[1-5]的信息
因為有或,所以要用到 | 符號,|屬于擴展正則,要接 -E
注意 | 兩邊不要空格
root@localhost lianxi]# cat /etc/passwd | grep -E ^root|feng[0-5]
root:x:0:0:root:/root:/bin/bash
feng1:x:1017:1017::/home/feng1:/bin/bash
feng2:x:1018:1018::/home/feng2:/bin/bash
feng3:x:1019:1019::/home/feng3:/bin/bash
feng4:x:1020:1020::/home/feng4:/bin/bash
feng5:x:1021:1021::/home/feng5:/bin/bash
############################################################################
egrep = grep -E
[root@localhost lianxi]# cat /etc/passwd | egrep ^root|feng[0-5]
root:x:0:0:root:/root:/bin/bash
feng1:x:1017:1017::/home/feng1:/bin/bash
feng2:x:1018:1018::/home/feng2:/bin/bash
feng3:x:1019:1019::/home/feng3:/bin/bash
feng4:x:1020:1020::/home/feng4:/bin/bash
feng5:x:1021:1021::/home/feng5:/bin/bash
############################################################################
輸出有效行
^$ 表示空行
例: 查找出來配置文件里的有效行
有效行:不是注釋和空行
以# 開頭的都是注釋
[root@localhost lianxi]# cat /etc/ssh/sshd_config | grep -vE ^#|^$
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
SyslogFacility AUTHPRIV
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes
ChallengeResponseAuthentication no
GSSAPIAuthentication yes
GSSAPICleanupCredentials no
UsePAM yes
X11Forwarding yes
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
Subsystem sftp /usr/libexec/openssh/sftp-server
############################################################################
正則表達式(簡單的) 基本正則:
基本正則:里面有很多常見的元字符 ^ $ [ ]
^ 以什么開頭
$ 以什么結(jié)尾
[ ] 表示集合
^$ 表示空行,一行里什么都沒有
############################################################################
[] {}
[0-9]{2} 表示0-9里面可以取2次的意思,隨便你取哪一個,取兩次
[0-9]{2,5} 表示從0-9里可以取2-5次的數(shù)字,隨便你取哪個,至少兩次,最多取5次
[0-9]{2,} 表示從0-9里可以取兩次以上,最少2次
a{2} 表示花括號前面的a連續(xù)出現(xiàn)兩次
abc{2}表示abc中的c出現(xiàn)2次
例:
[root@ lianxi]# echo |egrep abc{2}
擴展正則:
擴展正則:在基本正則的基礎(chǔ)上新加了很多的元字符,例如 :|表示或者
-E, ---regexp
因為grep默認支持基本正則,所以在用到擴展正則的時候要加-E
PATTERN as an regular (ERE, see below)
############################################################################
練習(xí)題:
2.[root@ lianxi]# cat passwd | egrep "^ftp|^mail"
3.[root@ lianxi]# cat passwd | egrep -v "^r|^m|^f"
[root@ lianxi]# cat passwd | egrep -v "^[rmf]"
[root@ lianxi]# cat passwd | egrep -v "^[^rmf]"
4.[root@ lianxi]# cat passwd | grep "bash$"
5.[root@ lianxi]# cat /etc/login.defs | egrep -v "^#|^$"
6.[root@ lianxi]# cat /var/log/ | egrep [a-Z]{16}
7.[root@ lianxi]# cat passwd | egrep liu.*bash
[root@ lianxi]# cat passwd | egrep liu | grep bash
8.[root@ lianxi]# cat /etc/ssh/ | grep -vE "^#|^$"
9.[root@ lianxi]# cat /etc/ssh/ | egrep [0-9][0-9]
10.[root@ lianxi]# cat /etc/ssh/ | egrep [^0-Z]
11.[root@ lianxi]# cat /etc/ssh/ | grep -v [0-9]
12.[root@ lianxi]# cat /var/log/secure | egrep [0-9]{,3}.[0-9]{1,3}
############################################################################