shell特殊符號cut命令sort_wc_uniq命令 tee_tr_split命令 shell特殊符號下

cut sort wc uniq tee tr split命令

• 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;

相關文章
相關標籤/搜索