cat,tac,revcat [OPTION]... [FILE]...(查看文件內容)centos
-E:顯示行結束符$ -n:對顯示出的每一行進行編號 -A:顯示全部控制符 -b:非空行編號 -s:壓縮連續的空行成一行
示例一:bash
[root@centos6data]#cat -n f1 1 1 2 2 3 3 4 14 5 6 adw 7 we 8 ads
示例二:app
[root@centos6data]#cat -A f1 1$ 2$ 3$ 14$ $ adw$ we$ ads$
示例三:less
[root@centos6data]#cat <f1 > f2 將f1的內容新建f2並存入內容 [root@centos6data]#cat f2 1 2 3 14 adw we ads
tac 縱向將反向顯示文本內容:dom
[root@centos6data]#seq 1 10 >f1 [root@centos6data]#tac f1 10 9 8 7 6 5 4 3 2 1
rev 橫向將文本反向顯示:工具
[root@centos6data]#cat /etc/fstab >f1 [root@centos6data]#rev f1 # batsf/cte/ # 9102 61:60:51 22 guA 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 # # 1 1 stluafed 4txe / a625053c83bb-2fdb-f174-f26c-07ba9a62=DIUU 2 1 stluafed 4txe toob/ 404f39fbf14b-cc08-97e4-083d-3edd6f1e=DIUU 2 1 stluafed 4txe atad/ ac9d2493fc8c-5cb9-1a64-432b-9df075f7=DIUU 0 0 stluafed paws paws cafaae2f597c-f3ca-5984-7881-c9d6f5eb=DIUU 0 0 stluafed sfpmt mhs/ved/ sfpmt 0 0 026=edom,5=dig stpved stp/ved/ stpved 0 0 stluafed sfsys sys/ sfsys 0 0 stluafed corp corp/ corp
more: 分頁查看文件
more [OPTIONS...] FILE...
-d: 顯示翻頁及退出提示this
[root@centos6data]#cat /etc/passwd | more 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 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 uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin gopher:x:13:30:gopher:/var/gopher:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin rtkit:x:499:499:RealtimeKit:/proc:/sbin/nologin avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin abrt:x:173:173::/etc/abrt:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin haldaemon:x:68:68:HAL daemon:/:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin saslauth:x:498:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin --More--
less:一頁一頁地查看文件或STDIN輸出查看時有用的命令包括:
/文本 搜索 文本
n/N 跳到下一個 或 上一個匹配
less 命令是man命令使用的分頁器lua
[root@centos6data]#ls /etc/ | less abrt acpi adjtime akonadi aliases aliases.db alsa alternatives anacrontab anthy-conf asound.conf at.deny audisp audit autofs.conf autofs_ldap_auth.conf auto.master auto.misc auto.net auto.smb avahi bash_completion.d bashrc blkid bluetooth bonobo-activation cas.conf
head [OPTION]... [FILE]...(取文件的前幾行)
-c #: 指定獲取前#字節
-n #: 指定獲取前#行
-#: 指定行數spa
示例:取當前文本的前兩行內容.net
[root@centos6data]#df | head -n2 Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda2 100660656 8786328 86754328 10%
tail [OPTION]... [FILE]...(取文件的後幾行)
-c #: 指定獲取後#字節 -n #: 指定獲取後#行 -#:同上 -f: 跟蹤顯示文件fd新追加的內容,經常使用日誌監控 至關於 --follow=descriptor -F: 跟蹤文件名,至關於--follow=name --retry tailf 相似tail –f,當文件不增加時並不訪問文件
示例:查看日誌文件的後5行
[root@centos6data]#tail /var/log/messages -n 5 Nov 8 14:21:26 centos6 pulseaudio[2688]: alsa-sink.c: We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() returned 0 or another value < min_avail. Nov 8 14:21:26 centos6 rtkit-daemon[2690]: Sucessfully made thread 2695 of process 2688 (/usr/bin/pulseaudio) owned by '42' RT at priority 5. Nov 8 14:21:27 centos6 pulseaudio[2688]: alsa-source.c: ALSA woke us up to read new data from the device, but there was actually nothing to read! Nov 8 14:21:27 centos6 pulseaudio[2688]: alsa-source.c: Most likely this is a bug in the ALSA driver 'snd_ens1371'. Please report this issue to the ALSA developers. Nov 8 14:21:27 centos6 pulseaudio[2688]: alsa-source.c: We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() returned 0 or another value < min_avail.
-f和-F之間的區別:
總結:-f跟蹤的是文件描述符,而-F跟蹤的是文件名。
先驗證-f,刪除了f1就不會在跟蹤內容,就算建立了f1,也不會再跟蹤。
[root@ansibledata]#tail -f -n 2 f1 跟蹤此時的文件,在此文件中追加內容,就會顯示跟蹤效果
5
6
a
[root@ansibledata]#echo a >> f1 追加一個文件
咱們將f1刪除從新複製一個文件再起名爲f1,此時再也不跟蹤文件信息
[root@ansibledata]#rm -f f1 [root@ansibledata]#cat /etc/fstab > f1 [root@ansibledata]#tail -f -n 2 f1 5 6 a
驗證-F:當tail 加-F 參數時,跟蹤的文件若是被刪除就會顯示此文件不可訪問,若是再建立f1,-F就會繼續跟蹤,說明-F是跟蹤文件:
[root@ansibledata]#rm -rf f1
[root@ansibledata]#tail -F -n 2 f1
UUID=eb4bf5e6-2645-4b1c-bda8-12c5831b81c2 /data xfs defaults 0 0
UUID=b8c37e0b-3628-40b6-ac44-c36ca09b448f swap swap defaults 0 0
tail: ‘f1’ has become inaccessible: No such file or directory
[root@ansibledata]#cp /etc/inittab f1 當咱們再建立f1。 [root@ansibledata]#tail -F -n 2 f1 此時-F會繼續跟蹤文件
UUID=eb4bf5e6-2645-4b1c-bda8-12c5831b81c2 /data xfs defaults 0 0
UUID=b8c37e0b-3628-40b6-ac44-c36ca09b448f swap swap defaults 0 0
tail: ‘f1’ has become inaccessible: No such file or directory
tail: ‘f1’ has appeared; following end of new file
# 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 main targets:
#
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
#
# To view current default target, run:
# systemctl get-default
#
# To set a default target, run:
# systemctl set-default TARGET.target
cut [OPTION]... [FILE]...(按列抽取文本)
-d DELIMITER: 指明分隔符,默認tab -f FILEDS: #: 第#個字段 #,#[,#]:離散的多個字段,例如1,3,6 #-#:連續的多個字段, 例如1-6 混合使用:1-3,7 -c 按字符切割 --output-delimiter=STRING指定輸出分隔符
示例一:
取出文本的第一列到第三列:
[root@ansibledata]#getent passwd | cut -d: -f1-3 root:x:0 bin:x:1 daemon:x:2 adm:x:3 lp:x:4 sync:x:5 shutdown:x:6 halt:x:7 mail:x:8 operator:x:11 games:x:12 ftp:x:14
示例二:
將df顯示的文本按空格壓縮,用cut以%做爲分隔符,取第5列,將磁盤利用率取出來:
[root@ansibledata]#df | tr -s " " % |cut -d% -f5 Use 5 0 0 2 0 1 17 1
示例三:
將網卡的IP地址取出來。
[root@ansibledata]#ifconfig ens33 | tr -s " " | head -n2 |tail -n1|cut -d" " -f3 192.168.34.101
paste 合併兩個文件同行號的列到一行
paste [OPTION]... [FILE]... -d 分隔符:指定分隔符,默認用TAB -s : 全部行合成一行顯示
示例一:
默認將f1和f2合併爲兩列
[root@ansibledata]#seq 1 10 > f1 [root@ansibledata]#echo {a..j} | tr " " "\n" > f2 [root@ansibledata]#paste f1 f2 1 a 2 b 3 c 4 d 5 e 6 f 7 g 8 h 9 i 10 j
示例二:
-s 用法:橫向合併
[root@ansibledata]#paste -s f1 f2 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10
-d用法:能夠以冒號做爲分隔符
[root@ansibledata]#paste -d: f1 f2 1:a 2:b 3:c 4:d 5:e 6:f 7:g 8:h 9:i 10:j
wc:計數單詞總數、行總數、字節總數和字符總數
能夠對文件或STDIN中的數據運行行數 字數 字節數
經常使用選項
-l 只計數行數 -w 只計數單詞總數 -c 只計數字節總數 -m 只計數字符總數 -L 顯示文件中最長行的長度
示例一:
統計當前文本的行數
[root@ansibledata]#cat f2 | wc -l 12
[root@ansibledata]#cat /var/log/messages | wc -l 44786
示例二:
統計當前文本文件最長行的長度
[root@ansibledata]#cat /var/log/messages | wc -L 1420
示例三:
除了字母其餘的字母都轉換爲回車換行:
[root@ansibledata]#cat /etc/profile | tr -sc "a-zA-Z" "\n" |wc -l 253
把整理過的文本顯示在STDOUT,不改變原始文件
sort [options] file(s)
經常使用選項
-r 執行反方向(由上至下)整理 -R 隨機排序 -n 執行按數字大小整理 -f 選項忽略(fold)字符串中的字符大小寫 -u 選項(獨特,unique)刪除輸出中的重複行 -t c 選項使用c作爲字段界定符 -k X 選項按照使用c字符分隔的X列來整理可以使用屢次
示例:
對文本以冒號形式對第三列進行逆序排序
[root@ansibledata]#cat /etc/passwd | sort -t: -k3 -nr nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin wang:x:1001:1001::/home/wang:/bin/bash liu:x:1000:1000:liu:/home/liu:/bin/bash polkitd:x:999:998:User for polkitd:/:/sbin/nologin libstoragemgmt:x:998:995:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin colord:x:997:994:User for colord:/var/lib/colord:/sbin/nologin gluster:x:996:993:GlusterFS daemons:/run/gluster:/sbin/nologin saslauth:x:995:76:Saslauthd user:/run/saslauthd:/sbin/nologin unbound:x:994:989:Unbound DNS resolver:/etc/unbound:/sbin/nologin
示例:
sort -u 有去重複的字符串功能,不加-u會默認將重複的排序到一塊兒。
[root@ansibledata]#cat f1 aa bb cc dd [root@ansibledata]#cat f2 aaa bb cc ddd [root@ansibledata]#cat f1 f2 | sort -u aa aaa bb cc dd ddd
示例:
取出分區利用率的最大值:
[root@ansibledata]#df | tr -s " " :|cut -d: -f5|sort -nr |head -1 17%
uniq [OPTION]... [FILE]...
-c: 顯示每行重複出現的次數 -d: 僅顯示重複過的行 -u: 僅顯示未曾重複的行
注:連續且徹底相同方爲重複,纔會進行統計
常和sort 命令一塊兒配合使用:
sort userlist.txt | uniq -c
示例:
取出日誌文件的前十個文本內容:
[root@ansibledata]#cut -d " " -f1 /var/log/httpd/access_log|sort |uniq -c | sort -nr |head -10
示例:
取出文件中的交集,也就是兩個文件中重複的部分:
[root@ansibledata]#cat f1 aa bb cc ss ddd [root@ansibledata]#cat f2 aa cc sss dddd [root@ansibledata]#cat f1 f2 |sort | uniq -d aa cc
示例:
顯示兩個文本中不一樣的內容,也就是都沒有的內容:
[root@ansibledata]#cat f1 f2 | sort |uniq -u bb ddd dddd ss sss
示例:
顯示文件的並集,就是將兩個文件的內容都合在一塊兒:
[root@ansibledata]#cat f1 f2 | sort -u aa bb cc ddd dddd ss sss
diff:逐行比較兩個文件之間的區別
示例:
[root@ansibledata]#diff -u f1 f2 --- f1 2019-11-08 17:05:58.956592311 +0800 +++ f2 2019-11-08 17:06:09.556591856 +0800 @@ -1,4 +1,4 @@ aa -bb +bbb ccc -eee +ee [root@ansibledata]#cat f1 aa bb ccc eee [root@ansibledata]#cat f2 aa bbb ccc ee
patch 複製在其它文件中進行的改變(要謹慎使用)
適用 -b 選項來自動備份改變了的文件
示例:
[root@ansibledata]#cat f1 aa bb ccc eee [root@ansibledata]#cat f2 aa bbb ccc ee [root@ansibledata]#diff -u f1 f2 > diff.log 將文件備份 [root@ansibledata]#rm -f f2 刪除f2 [root@ansibledata]#patch -b f1 diff.log 複製f1 patching file f1 [root@ansibledata]#cat f1 此時的f1是以前的f2內容 aa bbb ccc ee [root@ansibledata]#cat f1.orig f2.orig是以前的f1內容 aa bb ccc eee