文本查看
cat
查看文件的內(nèi)容,常用選項(xiàng):
- -E:查看行結(jié)束符$
- -n:對(duì)顯出的每一行進(jìn)行編號(hào)
- -A:顯示所有控制符
- -b:對(duì)非空行編號(hào)
- -s:壓縮連續(xù)的空行成一行
其兄弟命令tac,可以倒著查看文件,也就是從尾行開始查看
rev
將一行內(nèi)容倒過來
[root@centos6 ~]# echo "1234567890" |rev
0987654321
more
分頁查看文件,不支持man的快捷鍵
less
一頁一頁的查看文件,使用的時(shí)man的分頁器,支持man的快捷鍵
head
從頭部開始查看,默認(rèn)顯示前10行,常用選項(xiàng):
- -c:指定獲取前多少字節(jié)
- -n:指定獲取前多少行
- -#:指定獲取前#行
[root@centos6 ~]# head -n 3 /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
[root@centos6 ~]# head -3 /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
tail
從尾部開始查看,默認(rèn)顯示后10行,常用選項(xiàng):
- -c:指定獲取后多少字節(jié)
- -n:指定獲取后多少行
- -#:指定獲取后#行
- -f:跟蹤文件描述符顯示新追加的內(nèi)容,常用于日志監(jiān)控,--follow=descriptor
- -F:跟蹤文件名,相當(dāng)于--follow=name --retry
tailf
相當(dāng)于tail -f -10,當(dāng)文件不增長時(shí)不在訪問文件,可以減少磁盤的IO
cut
顯示文件或stdin數(shù)據(jù)的指定列,常用選項(xiàng):
- -d delimiter:指定分隔符,默認(rèn)是tab
- -f fileds:取去指定的列
- #:第#個(gè)列
- #,#,#:1,3,5列出135列
- #-#:3-6列出3456列
- -c:按字符分割
- --output-delimiter=string:指定輸出分隔符
[root@centos6 ~]# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@centos6 ~]# head -1 /etc/passwd |cut -d: -f1,3-6 --output-delimiter=/
root/0/0/root//root
[root@centos6 ~]# head -1 /etc/passwd |cut -c1-5
root:
paste
合并兩個(gè)文件同行號(hào)的列到一行,常用選項(xiàng):
- -d:指定分隔符,默認(rèn)是tab
- -s:將文件多行變成一行
[root@centos6 app]# cat a
a
b
c
[root@centos6 app]# cat b
1
2
3
[root@centos6 app]# paste a b
a 1
b 2
c 3
[root@centos6 app]# paste -d : a b
a:1
b:2
c:3
[root@centos6 app]# paste -s a b
a b c
1 2 3
[root@centos6 app]# paste -s a
a b c
文本分析
wc
默認(rèn)顯示行數(shù),字?jǐn)?shù)(不包含符號(hào)),字節(jié)數(shù)和文件名,常用選項(xiàng):
- -l:只計(jì)行數(shù)
- -w:只計(jì)單詞數(shù)
- -c:只計(jì)字節(jié)數(shù)
- -m:只計(jì)字符數(shù)
- -L:顯示文件中最長行的長度和文件名
[root@centos6 app]# cat a
nihao
helloword
[root@centos6 app]# cat a|wc
2 2 16
[root@centos6 app]# cat a
nihao
helloword
[root@centos6 app]# wc a
2 2 16 a
[root@centos6 app]# wc -L a
9 a
[root@centos6 app]# wc -L /etc/passwd
79 /etc/passwd
sort
把整理過的文本顯示在stdout,不改變?cè)嘉募J(rèn)排序方式受LC_COLLATE影響,按照UTF-8編碼排序,可以使用export LC_COLLATE=C改為按照ASCII編碼來排序,常用選項(xiàng):
- -n:按數(shù)字大小排序
- -r:倒序
- -f:忽略字母大小寫
- -u:刪除輸出中的重復(fù)行
- -t character:指定分隔符
- -k number:指定第幾列
[root@centos6 app]# tail /etc/passwd|sort -t: -k3 -n
ntp:x:38:38::/etc/ntp:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
pulse:x:497:496:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
saslauth:x:498:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
uniq
從輸入中刪除前后相接的重復(fù)的行,一般配合sort先排序一下,常用選項(xiàng):
- -c:顯示每行重復(fù)的次數(shù)
- -d:僅顯示重復(fù)過的行
- -u:僅顯示不重復(fù)的行
diff和patch
- diff file.old file.new:比較兩個(gè)文件不同之處
- diff -u file.old dile.new > file.patch:導(dǎo)出補(bǔ)丁文件
- patch -b file.old file.patch:將補(bǔ)丁打入舊文件
[root@centos6 app]# cat a.old
nihao
helloword
[root@centos6 app]# cat a.new
nihao
5
2
[root@centos6 app]# diff a.old a.new
2c2,3
< helloword
---
> 5
> 2
[root@centos6 app]# diff -u a.old a.new > file.patch
[root@centos6 app]# ls
a.new a.old file.patch
[root@centos6 app]# patch -b a.old file.patch
patching file a.old
[root@centos6 app]# cat a.old
nihao
5
2
練習(xí)
-
查出用戶UID最大值的用戶名、UID及shell類型
[root@centos6 app]# cat /etc/passwd|sort -t: -k3 -n |tail -1 |cut -d: -f1,3,7 nfsnobody:65534:/sbin/nologin -
查出/tmp的權(quán)限,以數(shù)字方式顯示
[root@centos6 app]# stat /tmp/ File: `/tmp/' Size: 4096 Blocks: 8 IO Block: 4096 directory Device: 802h/2050d Inode: 262145 Links: 21 Access: (1777/drwxrwxrwt) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2018-05-25 14:24:58.846543054 +0800 Modify: 2018-05-25 19:28:20.935536819 +0800 Change: 2018-05-25 19:28:20.935536819 +0800 [root@centos6 app]# stat /tmp/|head -4|tail -1|tr "(" /|cut -d/ -f2 1777 -
統(tǒng)計(jì)當(dāng)前連接本機(jī)的每個(gè)遠(yuǎn)程主機(jī)IP的連接數(shù),并按從大到小排序
[root@centos6 app]# cat /var/log/httpd/access_log |cut -d- -f1|sort |uniq -c |sort -t' ' -k1 -nr 14966 172.18.118.213 2246 172.18.118.190 8 172.18.118.140 2 172.18.118.147