• cut 分割,-d 分隔符 -f 指定段號 -c 指定第幾個字符正則表達式
cut -d ":" -f 1 /etc/passwd 截取/etc/passwd文件中以:分割的第一段bash
cut -d ":" -f 2,4 /etc/paaswd 截取/etc/passwd文件中以:分割的第一段spa
cut -d ":" -f 1-3 /etc/passwd 截取/etc/passwd文件中以:分割的1到3段.net
head -n 3 /etc/passwd |cut -d":" -f 1 /etc/passwd 的前三行截圖第一段排序
cut -c 6 /etc/passwd 提取每行的第六個字符文檔
cut -c 1-8 /etc/passwd 提取每行的前八個字符字符串
• sort 排序, -n 以數字排序 -r 反序 -u 去重複 -t 分隔符 -kn1/-kn1,n2get
sort /etc/passwd sort不加任何選項,則從首字符向後,依次按ASCII碼值進行比較,it
最後將它們按升序輸出。class
head -n 5 /etc/passwd |sort -t: -k3 -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
-t後面跟分割符,-k後面跟數字,表示第幾個區域的字符串排序,-n則表示使用純數字排序。
head -n5 /etc/passwd | sort -t: -k3,5 -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
-k3,5表示從第3到第5區域間的字符串排序,-r表示反向排序。
若是把-nu一塊兒使用,sort會把文檔中的字母當作0
[root@localhost ~]# cut -d: -f1 /etc/passwd |sort -n -u
root
就只剩第一行了,由於它把全部的字符串都當作是0了
• wc -l 統計行數 -m 統計字符數 -w 統計詞 -c顯示Bytes大小 -L顯示長度最長的行
[root@localhost ~]# cat file
123
abc
[root@localhost ~]# cat -A file
123$
abc$
[root@localhost ~]# wc -l file
2 file
[root@localhost ~]# wc -c file
8 file
[root@localhost ~]# wc -m file
8 file
[root@localhost ~]# wc -w file
2 file
-m統計字符時,每行末尾的換行符$也會統計
-w統計詞 以空格爲分割符計算
• uniq 去重, -c統計行數
uniq去重前提是先排序,相同的行不在一塊兒的話不生效
經常使用格式:
sort file |uniq
sort file |uniq -c
[root@localhost ~]# cat 123
12
ab
12
a
[root@localhost ~]# uniq 123
12
ab
12
a
[root@localhost ~]# sort 123 |uniq
12
a
ab
[root@localhost ~]# sort 123 |uniq -c
2 12
1 a
1 ab
[root@localhost ~]#
• tee 和>相似,重定向的同時還在屏幕顯示; -a 追加選項
[root@localhost ~]# sort 123 |uniq -c |tee a.txt
2 12
1 a
1 ab
[root@localhost ~]# cat a.txt
2 12
1 a
1 ab
[root@localhost ~]# sort 123 |uniq -c |tee -a a.txt
2 12
1 a
1 ab
[root@localhost ~]# cat a.txt
2 12
1 a
1 ab
2 12
1 a
1 ab
[root@localhost ~]#
• tr 替換字符,tr 'a' 'b',大小寫替換tr '[a-z]' '[A-Z]'
[root@localhost ~]# echo "gavin" |tr 'g' 'G'
Gavin
• split 切割,-b大小(默認單位字節),-l行數
split -b 100 file 按100字節來切割
split -b 10k file 按10k大小來切割
split -b 1M file 按1M大小來切割
split -l 100 file 按每100行來切割
split -l 100 file f 指定切割後的文件名字以f開頭
split -a 指定用於造成輸出名稱文件後綴部分的字母數
split -d 用數字代替字母后綴
[root@localhost gavin]# ll -h file
-rw-r--r--. 1 root root 13M 6月 30 20:04 file
[root@localhost gavin]# split -b 1M file f
[root@localhost gavin]# ls
faa fab fac fad fae faf fag fah fai faj fak fal fam file
[root@localhost gavin]# split -l 1000 file file_
[root@localhost gavin]# ls
file file_aa file_ab file_ac file_ad file_ae file_af
• * 任意個任意字符
• ? 任意一個字符
• # 註釋字符
• \ 脫義字符
• | 管道符
• $ 變量前綴,!$組合,正則裏面表示行尾
• ;多條命令寫到一行,用分號分割
• ~ 用戶家目錄,後面正則表達式表示匹配符
• & 放到命令後面,會把命令丟到後臺
• > >> 2> 2>> &>
• [ ] 指定字符中的一個,[0-9],[a-zA-Z],[abc]
• || 和 && ,用於命令之間
|| 或者 前面命令執行成功不在執行第二條命令;前面命令執行不成功時執行後面命令;
&& 而且 前面命令執行成功纔會執行後面的命令,不然不執行後面命令
; 無論前面命令執行成功與否後面命令都執行;
[root@localhost gavin]# [ -d gavin ] || mkdir gavin
[root@localhost gavin]# ls
gavin
[ -d gavin ] 查看是否有gavin這個目錄,沒有時建立gavin;
[root@localhost gavin]# [ -d gavin ] && mkdir gavin1
[root@localhost gavin]# ls
gavin gavin1
[ -d gavin ] 查看是否有gavin這個目錄,有時建立gavin1;