1.一、cat
cat命令主要用來查看文件內容,建立文件,文件合併,追加文件內容等功能。
經常使用選項
-n :查看文本時顯示行號
-b :查看文本時顯示行號,有空白的行不計其內
-E :顯示是否換行,結尾以"$"結尾表示有換行
-A :顯示TAB是否有加鍵,一個"^I"表示一個TAB
-s :壓縮相鄰的空行爲一個php
(1)測試文件 [root@kube-master ~]# cat F1 123 456 789 123123 (2)-n :查看文本時顯示行號 [root@kube-master ~]# cat -n F1 1 123 2 456 3 789 4 123123 5 6 (3)-b :查看文本時顯示行號,有空白的行不計其內 [root@kube-master ~]# cat -b F1 1 123 2 456 3 789 4 123123 (4)-E :顯示是否換行,結尾以"$"結尾表示有換行 [root@kube-master ~]# cat -E F1 123$ 456$ 789 $ 123123 $ $ $ (5) -A :顯示TAB是否有加鍵,一個"^I"表示一個TAB [root@kube-master ~]# cat -A F1 123$ 456$ 789 $ 123123^I^I $ $ $ (6)-s :壓縮相鄰的空行爲一個 [root@kube-master ~]# cat -s F1 123 456 789 123123 (7)生成文件 [root@kube-master ~]# cat > F2 test ctrl + d退出 [root@kube-master ~]# cat F2 test (9)合併文件 [root@kube-master ~]# cat F1 F2 > F3 [root@kube-master ~]# cat F3 123 456 789 123123 test
1.二、tac
將文本倒過來查看mysql
(1)將文本倒過來查看 [root@kube-master ~]# tac F1 123123 789 456 123
1.三、rev
反向顯示nginx
(1)反向顯示內容 [root@kube-master ~]# echo "abcd" | rev dcba [root@kube-master ~]# rev < /etc/fstab # batsf/cte/ # 9102 24:54:90 13 naJ uhT no adnocana yb detaerC # # 'ksid/ved/' rednu deniatniam era ,ecnerefer yb ,smetsyselif elbisseccA # ofni erom rof )8(diklb ro/dna )8(tnuom ,)8(sfdnif ,)5(batsf segap nam eeS # # 0 0 stluafed sfx / toor-sotnec/reppam/ved/ 0 0 stluafed sfx toob/ 5fe0eaa3ec3f-6eb9-5234-0aee-21b8c81d=DIUU 0 0 stluafed paws paws paws-sotnec/reppam/ved/
1.四、head
顯示頭幾行或者頭幾個字節
經常使用選項
-# :#表示數字,表示顯示前幾#行
-n # :#表示數字,表示顯示前幾#行,跟上面-#相似
-c # :#表示數字,表示顯示前幾個字節的數據git
(1)-# :#表示數字,表示顯示前幾#行 [root@kube-master ~]# head -5 /etc/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 adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin (2)-n # :#表示數字,表示顯示前幾#行,跟上面-#相似 [root@kube-master ~]# head -n 5 /etc/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 adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin (3)-c # :#表示數字,表示顯示前幾個字節的數據 [root@kube-master ~]# head -c 5 /etc/passwd root:
1.五、tail
顯示倒數後幾行或倒數後幾個字節,固然tail使用起來更加豐富
經常使用選項
-# :顯示倒數後#行
-n # :跟-#同樣,顯示倒數後#行
-c # :顯示倒數後#字節
-f :實時顯示最後一行
-F :實時顯示最後一行,當文件不存在則顯示文件不存在web
(1)-# :顯示倒數後#行 [root@kube-master ~]# tail -5 /etc/passwd gitlab-prometheus:x:993:990::/var/opt/gitlab/prometheus:/bin/sh jenkins:x:992:989:Jenkins Automation Server:/var/lib/jenkins:/bin/false ntp:x:38:38::/etc/ntp:/sbin/nologin nginx:x:991:988:Nginx web server:/var/lib/nginx:/sbin/nologin mysql:x:990:987::/home/mysql:/sbin/nologin (2)-n # :跟-#同樣,顯示倒數後#行 [root@kube-master ~]# tail -n 5 /etc/passwd gitlab-prometheus:x:993:990::/var/opt/gitlab/prometheus:/bin/sh jenkins:x:992:989:Jenkins Automation Server:/var/lib/jenkins:/bin/false ntp:x:38:38::/etc/ntp:/sbin/nologin nginx:x:991:988:Nginx web server:/var/lib/nginx:/sbin/nologin mysql:x:990:987::/home/mysql:/sbin/nologin (3)-c # :顯示倒數後#字節 [root@kube-master ~]# tail -c 10 /etc/passwd n/nologin (4) -f :實時顯示最後一行, 默認狀況會打印後10行而且監控最後一行,當增長一行機會實時顯示數據出來 [root@kube-master ~]# tail -f F1 123 456 789 123123 [root@kube-master ~]# echo "testline" >> F1 [root@kube-master ~]# tail -f F1 123 456 789 123123 testline 實時監測只顯示最後一行 [root@squid ~]# tail -n 0 -f /etc/fstab tesst (5) -F :實時顯示最後一行,當文件不存在則顯示文件不存在 [root@kube-master ~]# tail -F F1 123 456 789 123123 testline [root@kube-master ~]# rm -f F1 [root@kube-master ~]# tail -F F1 123 456 789 123123 testline tail: ‘F1’ has become inaccessible: No such file or directory
1.六、tailf
跟tail -f 同樣,可是性能更高,當文件發生變化才輸出內容,不實監測磁盤,省電,減小磁盤讀寫.sql
[root@kube-master ~]# tailf /var/log/nginx/access.log
1.七、tr
對標準輸入作文本的刪除,替換等
經常使用選項
-d :對標準輸入刪除指定內容
-s : 縮減連續重複的字符成指定的單個字符json
(1)測試文件 [root@kube-master ~]# cat > F1 123 34545 asdasdas 123 7878 ctrl + d退出 [root@kube-master ~]# cat F1 123 34545 asdasdas 123 7878 (2)刪除文件內容,刪除帶有"123"字眼的內容 [root@kube-master ~]# tr -d "123" < F1 4545 asdasdas 7878 (3)將小寫字母替換成大寫字母,標準輸出生成F3文件 [root@kube-master ~]# tr "a-z" "A-Z" < F1 > F3 [root@kube-master ~]# cat F3 123 34545 ASDASDAS 123 7878 (4)將多列空白壓縮成一列 [root@kube-master ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/centos-root 120527360 54045264 66482096 45% / devtmpfs 1919508 0 1919508 0% /dev tmpfs 1931784 0 1931784 0% /dev/shm tmpfs 1931784 11968 1919816 1% /run tmpfs 1931784 0 1931784 0% /sys/fs/cgroup /dev/sda1 1038336 145300 893036 14% /boot tmpfs 386360 0 386360 0% /run/user/0 [root@kube-master ~]# df -h | tr -s " " Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 115G 52G 64G 45% / devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 12M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/sda1 1014M 142M 873M 14% /boot tmpfs 378M 0 378M 0% /run/user/0
1.八、cut
對列切割
經常使用選項
-d :以什麼做爲分隔符
-c :取出第幾列
--output-delimeter="#" :輸出內容的時候以什麼做爲分隔符centos
(1)以/etc/passwd爲列子前5行爲列子 [root@kube-master ~]# cat /etc/passwd | head -5 root:x:0:0:root:/root:/bin/bash 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 (2)取出第1列,用戶名 [root@kube-master ~]# cut -d : -f 1 /etc/passwd | head -5 root bin daemon adm lp (3)取出第1和第3列 [root@kube-master ~]# cut -d : -f 1,3 /etc/passwd | head -5 root:0 bin:1 daemon:2 adm:3 lp:4 (4)取出第1列至第3列 [root@kube-master ~]# cut -d : -f 1-3 /etc/passwd | head -5 root:x:0 bin:x:1 daemon:x:2 adm:x:3 lp:x:4 (5)取出第1列至第3列,以|號爲分割符輸出 [root@kube-master ~]# cut --output-delimiter="|" -d : -f 1-3 /etc/passwd | head -5 root|x|0 bin|x|1 daemon|x|2 adm|x|3 lp|x|4
1.九、paste
將兩文件橫向合併,默認將第1個文件的第一行和第2個文件的第一行合併在一塊兒以此類推
經常使用選項
-d :合併中間輸出的分隔符,默認爲空格
-s :將每一個文件的全部行合併成1行,第1個文件全部內容合併成第一行,第2個文件的全部內容合併成第二行api
(1)你們若是用過ansible都知道,若是使用ansible批量發送SSH公鑰須要在/etc/ansible/hosts中 定義每一個主機的SSH用戶和密碼,通常在管理主機的時候咱們都會將密碼類的信息記錄在xls中, 這時候就排上用場了(假若有100臺主機,密碼都不同)將xls記錄的IP列複製到F1文件,不排除有 windwos的"^M"回車,使用dos2unix清除,下面F2,F3文件也同樣,固然ansible_ssh_user, ansible_ssh_pss不是xls記錄內容,還須要先合併F1,F2這個我就不講了,下面會了就明白了。 文件1 [root@kube-master ~]# cat F1 [host] 10.1.1.1 10.1.1.2 10.1.1.3 10.1.1.4 文件2 [root@kube-master ~]# cat F2 ansible_ssh_user=root ansible_ssh_user=root ansible_ssh_user=root ansible_ssh_user=root 文件3 [root@kube-master ~]# cat F3 ansible_ssh_pass=123 ansible_ssh_pass=456 ansible_ssh_pass=789 ansible_ssh_pass=910 合成文件,循序要F1,F2,F3 [root@kube-master ~]# paste F1 F2 F3 [host] 10.1.1.1 ansible_ssh_user=root ansible_ssh_pass=123 10.1.1.2 ansible_ssh_user=root ansible_ssh_pass=456 10.1.1.3 ansible_ssh_user=root ansible_ssh_pass=789 10.1.1.4 ansible_ssh_user=root ansible_ssh_pass=910 (2)加上-d選項的效果 [root@kube-master ~]# paste -d : F1 F2 F3 [host]:: 10.1.1.1:ansible_ssh_user=root:ansible_ssh_pass=123 10.1.1.2:ansible_ssh_user=root:ansible_ssh_pass=456 10.1.1.3:ansible_ssh_user=root:ansible_ssh_pass=789 10.1.1.4:ansible_ssh_user=root:ansible_ssh_pass=910 (3)-s :將每一個文件的全部行合併成1行,第1個文件全部內容合併成第一行,第2個文件的全部內容合併成第二行 [root@kube-master ~]# paste -s F1 F2 F3 [host] 10.1.1.1 10.1.1.2 10.1.1.3 10.1.1.4 ansible_ssh_user=root ansible_ssh_user=root ansible_ssh_user=root ansible_ssh_user=root ansible_ssh_pass=123 ansible_ssh_pass=456 ansible_ssh_pass=789 ansible_ssh_pass=910
2.0、wc
-l :統計多少行
-w :統計多少個單詞
-c :統計多少個字節
-m :統計多少個字符
-L :顯示文件中最長行的長度bash
(1)以這個爲列子 [root@kube-master ~]# cat F1 [host] 10.1.1.1 10.1.1.2 10.1.1.3 10.1.1.4 (2)默認不加任何選項表示爲,5行,5個單詞,43個字節數 [root@kube-master ~]# wc F1 5 5 43 F1 (3)-l :統計多少行 [root@kube-master ~]# cat F1 | wc -l 5 (4)-w :統計多少個單詞 [root@kube-master ~]# cat F1 | wc -w 5 (5)-c :統計多少個字節 [root@kube-master ~]# cat F1 | wc -c 43 (6)-m :統計多少個字符 [root@kube-master ~]# cat F1 | wc -m 43 -L :顯示文件中最長行的長度 [root@kube-master ~]# cat F1 | wc -L 8
2.一、sort
對內容排序或者去重複等,默認以每行第一個字符排序
經常使用選項
-t :指定分隔符
-k :指定對哪一列排序,通常跟-t配合使用
-n :按數字排序,默認按升序排序,從小到大1,2,3,4,5,6
-r :倒序
-u :排序同時去掉重複的行,相鄰和不相鄰的重複行也會刪除
-f :忽略大小寫
(1)以/etc/passwd爲列子前5行爲列子 [root@kube-master ~]# cat /etc/passwd | head -5 root:x:0:0:root:/root:/bin/bash 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 (2)默認狀況不加任何選項以每行第一個字符排序,adm,bin,daemon,lp,root [root@kube-master ~]# cat /etc/passwd | head -5 | sort adm:x:3:4:adm:/var/adm:/sbin/nologin bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin root:x:0:0:root:/root:/bin/bash (3)指定以第3列UID排序,而且以數字排序,升序 [root@kube-master ~]# cat /etc/passwd | head -5 | sort -t : -k 3 -n root:x:0:0:root:/root:/bin/bash 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 (4)-r 倒排 [root@kube-master ~]# cat /etc/passwd | head -5 | sort -t : -k 3 -n -r lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin bin:x:1:1:bin:/bin:/sbin/nologin root:x:0:0:root:/root:/bin/bash (5)去掉重複的行 [root@kube-master ~]# cat F1 11 11 2 3 4 5 22 22 [root@kube-master ~]# cat F1 | sort -u 11 2 22 3 4 5
2.二、uniq
去重複行或者對重複行統計
經常使用選項
-c :對連續重複以及不連續重複的行統計
-u :只顯示不連續重複的行
-d :只顯示相鄰而且連續重複的行
(1)以這個爲例子 [root@kube-master ~]# cat F1 11 11 2 3 4 5 22 22 (2)-c :對連續重複以及不連續重複的行統計 [root@kube-master ~]# cat F1 | uniq -c 2 11 1 2 1 3 1 4 1 5 2 22 (3) -u :只顯示不連續重複的行 [root@kube-master ~]# cat F1 | uniq -u 2 3 4 5 (4)-d :只顯示相鄰而且連續重複的行 [root@kube-master ~]# cat F1 | uniq -d 11 22
2.三、其餘
(1)生成隨機數取前30個字節 base64 openssl rand -base64 30 | head -c 30 16進制 openssl rand -hex 30 | head -c 30 隨機生成30個數字 tr -dc '[[:digit:]]' < /dev/urandom | head -c 30 隨機生成30個小寫字母 tr -dc '[[:lower:]]' < /dev/urandom | head -c 30 隨機生成30個大寫字母 tr -dc '[[:upper:]]' < /dev/urandom | head -c 30
1.一、UV
UV即用戶訪問量,通常統計以不重複的單個IP之和來衡量
(1)以這個nginx日誌文件爲例子 [root@kube-master ~]# cat access.log | head -1 192.168.126.111 - - [20/Feb/2019:15:35:16 +0800] "GET / HTTP/1.1" 200 1482 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36" (2)先取出第1例,而後對他進行排序,排序完就去重複,而後統計 [root@kube-master ~]# cat access.log | cut -d " " -f 1 | sort -n | sort -u | wc -l 4 [root@kube-master ~]# cat access.log | cut -d " " -f 1 | sort -n | uniq | wc -l 4
1.二、PV
PV即頁面訪問量,每一個頁面的訪問量多少
(1)以這個nginx日誌文件爲例子 [root@kube-master ~]# cat access.log | head -1 192.168.126.111 - - [20/Feb/2019:15:35:16 +0800] "GET / HTTP/1.1" 200 1482 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36" (2)首先取出URI第7列,而後按字符排序,而後uniq -c對重複或者不重複的進行統計,而後升序排序,找出頁面訪問最大的URI [root@kube-master ~]# cat access.log | cut -d " " -f 7 | sort | uniq -c | sort -r -n 60 /favicon.ico 3 /zabbix 3 /lnmp.gif 3 / 1 /zabbix/api_jsonrpc.php
一步一步來!!!!!!!!!!!!!!!!!!!!!!其實很簡單噠!!!!!!!!!!!!!!!!!!!!!