🎯 本文專欄:Linux
🚀 作者主頁:小度愛學習
1、瀏覽普通文件內容
命令 | 常用選項 | 說明 |
---|---|---|
cat | -n 對輸出內容中的所有行標注行號;-b 對輸出內容中的非空行標注行號。 | 查看文本文件的內容 |
head | -num 指定需要顯示文件num行的內容。 | 默認查看文檔前10行內容 |
tail | -num 指定需要顯示文件num行的內容;-f 使tail不停地去讀取和顯示文件最新的內容, 這樣有實時監視的效果;tail命令更多的用于查看系統日志文件,按【Ctrl+C】鍵終止顯示和跟蹤。 | 默認查看文檔后10行內容 |
more | -c 從頂部清屏然后顯示文件內容。 | 分頁查看文件內容;按Enter鍵向下逐行滾動;按空格鍵向下翻一屏、按b鍵;向上翻一屏;文件末尾時more會自動退出 |
less | -c 從頂部清屏然后顯示文件內容;-N 其作用是在每行前添加輸出行號。 | 分頁查看文件內容;按Enter鍵向下逐行滾動;按空格鍵向下翻一屏、按b鍵向上翻一屏;按q鍵退出 |
[root@master test]# cat /etc/ssh/sshd_config
[root@master test]# head /etc/ssh/sshd_config
[root@master test]# tail /etc/ssh/sshd_config
[root@master test]# more /etc/ssh/sshd_config
[root@master test]# less /etc/ssh/sshd_config
說明:以上所有命令均可以結合管道符使用
2、過濾文件內容顯示——grep
(1)功能:在指定的普通文件中查找并顯示含有指定字符串的行,也可與管道符一起使用
(2)格式: grep 選項…… 關鍵字符串 文件名稱……
選項 | 說明 |
---|---|
-c | 僅顯示找到的行數 |
-i | 忽略大小寫 |
-n | 顯示行號 |
-v | 反向選擇——僅列出沒有“關鍵詞”的行 |
-A | -A 2 搜索時顯示匹配到的那一行以及下2行 |
-B | -B 2 搜索時顯示匹配到的那一行以及上2行 |
-C | -C 2 搜索時顯示匹配到的那一行以及上下2行 |
(3)簡單示例
在Linux系統中,/etc/passwd文件是保存著所有的用戶信息,而一旦用戶的登錄終端被設置成/sbin/nologin,則不再允許登錄系統,因此可以使用grep命令來查找出當前系統中不允許登錄系統的所有用戶信息:
[root@kongd ~]# grep /sbin/nologin /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
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
………………省略部分輸出過程信息………………
(4)使用特殊符號進行字符串的匹配
匹配模式 | 說明 |
---|---|
grep h 文件名 | 查找文件里有字符h的行 |
grep ^ [q] 文件名 | 匹配以q開始的行 |
grep ^ [qf] 文件名 | 匹配以q或者f開頭的行 |
grep ^ [ ^qf ] 文件名 | 不匹配以q或者f開頭的行 |
grep ^ [0-9] 文件名 | 匹配以數字開頭的行 |
grep q$ 文件名 | 匹配以q結束的行 |
grep ^$ | 過濾空白行 |
grep -r h ./* | 如果要明確搜索當前目錄中的子目錄有h的行 |
grep -d skip h ./* | 忽略當前目錄下的子目錄下的普通文件 |
[root@master test]# grep a /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
………………省略部分輸出過程信息………………
[root@master test]# grep ^a /etc/passwd
adm:x:3:4:adm:/var/adm:/sbin/nologin
[root@master test]# grep h$ /etc/passwd
root:x:0:0:root:/root:/bin/bash
centos:x:1000:1000:centos:/home/centos:/bin/bash
[root@master test]# grep -v h$ /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
………………省略部分輸出過程信息………………
3、切割顯示cut
cut命令用于按列提取文本內容,語法為: cut [選項] 文件名稱
系統文件在保存用戶數據信息時,每一項值之間是采用冒號來間隔的,先查看一下:
[root@kongd ~]# head -n 2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@kongd ~]# cut -d: -f1 /etc/passwd
root
bin
daemon
adm
lp
………………省略部分輸出信息………………
[root@server ~]# cut -c 3 /etc/passwd | head -3
o
n
e
4、排序顯示sort
一般而言,按基于“行”的方式來提取數據是比較簡單的,只需要設置好要搜索的關鍵詞即可。但是如果
按列搜索,不僅要使用-f參數來設置需要看的列數,還需要使用-d參數來設置間隔符號。
接下來使用下述命令嘗試提取出passwd文件中的用戶名信息,即提取以冒號(:)為間隔符號的第一列
內容
sort命令用于對文本內容進行排序顯示,語法為: sort [選項] 文件名稱
選項 | 作用 |
---|---|
-f | 忽略大小寫 |
-b | 忽略縮進與空格 |
-n | 以數值型排序 |
-r | 反向排序 |
-u | 去除重復行 |
-t | 指定間隔符 |
-k | 設置字段范圍 |
首先,sort命令執行后默認會按照字母順序進行排序,非常方便:
[root@kongd ~]# cat fruit.txt
banana
pear
apple
orange
raspaberry
[root@kongd ~]# sort fruit.txt
apple
banana
orange
pear
raspaberry
sort -u參數進行去重操作:
[root@kongd ~]# cat sort.txt
Welcome to kongd.com
Red Hat certified
Welcome to kongd.com
Free Linux Lessons
Linux Course
[root@kongd ~]# sort -u sort.txt
Free Linux Lessons
Red Hat certified
Welcome to kongd.com
想對數字進行排序?也是一點問題都沒有的,而且完全不用擔心出現1小于20這種問題(有些命令只比較第一位):
[root@kongd ~]# cat number.txt
45
12
3
98
82
67
24
56
9
[root@kongd ~]# sort -n number.txt
3
9
12
24
45
56
67
82
98
最后,我們挑戰一個“高難度”的小實驗。下面的內容是節選自/etc/passwd文件中前五個字段的內容,并進行混亂排序后的樣子:
[root@kongd ~]# cat user.txt
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon
polkitd:x:998:996:User for polkitd
geoclue:x:997:995:User for geoclue
rtkit:x:172:172:RealtimeKit
pulse:x:171:171:PulseAudio System Daemon
qemu:x:107:107:qemu user
usbmuxd:x:113:113:usbmuxd user
unbound:x:996:991:Unbound DNS resolver
rpc:x:32:32:Rpcbind Daemon
gluster:x:995:990:GlusterFS daemons
不難看出上面其實是五個字段,各個字段之間是用了冒號進行間隔,如果想以第三個字段中的數字作為排序依據,那么就可以用-t參數指定間隔符,-k參數指定第幾列,-n參數進行數字排序來搞定:
[root@kongd ~]# sort -t : -k 3 -n user.txt
rpc:x:32:32:Rpcbind Daemon
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon
qemu:x:107:107:qemu user
usbmuxd:x:113:113:usbmuxd user
pulse:x:171:171:PulseAudio System Daemon
rtkit:x:172:172:RealtimeKit
gluster:x:995:990:GlusterFS daemons
unbound:x:996:991:Unbound DNS resolver
geoclue:x:997:995:User for geoclue
polkitd:x:998:996:User for polkitd
5、去重顯示uniq
uniq命令用于去除文本中連續的重復行,語法為: uniq [選項] 文件名稱
我們對兩個文本內容進行操作,區別一目了然:
[root@kongd ~]# cat uniq.txt
Welcome to kongd.com
Welcome to kongd.com
Welcome to kongd.com
Welcome to kongd.com
Red Hat certified
Free Linux Lessons
Professional guidance
Linux Course
[root@kongd ~]# uniq uniq.txt
Welcome to kongd.com
Red Hat certified
Free Linux Lessons
Professional guidance
Linux Course
[root@master ~]# uniq -c uniq.txt4 Welcome to kongd.com1 Red Hat certified1 Free Linux Lessons1 Professional guidance1 Linux Course
6、替換文件中的字符顯示tr
tr 指令從標準輸入讀取數據,經過替換或者刪除后,將結果輸出到標準輸出。
語法: tr [OPTION]…SET1[SET2]
參數說明:
- -c 反選設定字符。也就是符合 SET1 的部份不做處理,不符合的剩余部份才進行轉換
- -d 刪除指令字符
- -s 縮減連續重復的字符成指定的單個字符
示例:將文件testfile中的小寫字母全部轉換成大寫字母,可使用如下命令:
[root@master ~]#cat testfile |tr a-z A-Z