1. 程式人生 > >二十五、shell特殊符號cut命令、sort_wc_uniq命令、 tee_tr_split命令、

二十五、shell特殊符號cut命令、sort_wc_uniq命令、 tee_tr_split命令、

特殊符號 sort_wc_uniq命令 tee_tr_split命令

二十五、shell特殊符號cut命令、sort_wc_uniq命令、 tee_tr_split命令、 shell特殊符號下

一、shell特殊符號cut命令

特殊符號

*:通配。

?:任意一個字符。

#:註釋字符,加在命令前面命令就不會生效。

\:脫義字符。會將後面的特殊符號(如*)還原為普通字符。示例:

# ls -d 123\*

ls: 無法訪問123*: 沒有那個文件或目錄

cut命令:截取某一個字段。分隔。

格式:# cut -d '分隔字符' [-cf] n,n為數字。

可用選項:

-d:後面指定分隔字符,分隔字符要用引號括起來,單引號或雙引號都可以。

-c:後面接的是第幾個字符。使用該參數就不要用-d和-f了。

-f:後面接的是第幾個區塊。指定段號。

用法示例:

# cat /etc/passwd|cut -d ':' -f 1 |head -2

root

bin

# cat /etc/passwd|head -2|cut -d ':' -f 1-5

root:x:0:0:root

bin:x:1:1:bin

# cat /etc/p sswd|cut -c 4 |head -2

t

:

sort命令:用作排序。

格式:# sort [-t 分隔符] [-kn1,n2] [-nru]

-t:後面跟分隔字符,作用和cut的-d選項一樣。

-n:使用純數字排序。

-r:反向排序。

-u:去重復。

-kn1,n2:由n1區間排序到n2區間,可以只寫-kn1,即對n1字段排序。

不加任何選項時,則從首字符向後依次按ASCII碼值進行比較,最後將它們按升序輸出。

用法示例:

# head -n5 /etc/passwd |sort -t: -k2 -n

adm:x:3:4:adm:/var/adm:/sbin/nologin

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

root:x:0:0:root:/root:/bin/bash

# head -n3 /etc/passwd |sort -t: -k3,5 -r

daemon:x:2:2:daemon:/sbin:/sbin/nologin

bin:x:1:1:bin:/bin:/sbin/nologin

root:x:0:0:root:/root:/bin/bash

wc命令:用於統計文檔的行數、字符數或詞數。

-l:統計行數

-m:統計字符數

-w:統計詞數

用法示例:

# wc /etc/passwd

21 29 921 /etc/passwd

# wc -l /etc/passwd

21 /etc/passwd

# wc -m /etc/passwd

921 /etc/passwd

# wc -w /etc/passwd

29 /etc/passwd

# wc -m 1.txt

4 1.txt

# cat -A 1.txt $有一個換行符,因此是4個字符。

l$

f$

uniq命令:去重復。一般和sort一起用,先排序,再去重。

-c:統計重復的行數。

示例:

# cat 1.txt

123

321

abc

123

abc

456

# sort 1.txt |uniq -c

1

2 123

1 321

1 456

2 abc

tee命令:後面跟文件名,作用類似於重定向>,但它比重定向多一個功能,即把文件寫入後面所跟的文件時,還顯示在屏幕上。該命令常用於管道符後。

-a:追加。

示例:

# echo 'aaaaa' |tee 1.txt

aaaaa

# cat 1.txt

aaaaa

# echo 'aaaaabc' |tee -a 1.txt

aaaaabc

# cat 1.txt

aaaaa

aaaaabc

tr命令:替換字符,針對字符操作。

常用選項:

-d:刪除某個字符,後面跟要刪除的字符。

-s:刪除重復的字符。

常用於把小寫字母變成大寫。如tr '[a-z]' '[A-Z]'。

示例:

# echo abcde |tr 'a' 'A'

Abcde

split命令:切割文檔。

常用選項:

-b:依據大小來分割文檔,默認單位為byte。

-l:依據行數來切割文檔。

示例:

# split -b 500 passwd 123 指定大小的同時還可以指定文件名,示例為123。

四、特殊符號(下)

$:用作變量前面的標識符,還可以和!結合起來使用,!$正則裏面表示行尾。

;:在一行內運行兩個或以上的命令時,在命令之間加符號;。

~:用戶的家目錄,root用戶的家目錄為/root,普通用戶得為/hone/username。正則表達式表示匹配符。

&:用於把一條命令放到後臺執行,通常用於命令運行時間較長的情況。示例:

# sleep 100 &

[1] 1529

# jobs

[1]+ 運行中 sleep 100 &

2>或者2>>:錯誤重定向,錯誤追加重定向。重定向一個文本。

示例:

# ls aaa

ls: 無法訪問aaa: 沒有那個文件或目錄

# ls aaa 2> /tmp/123

# cat /tmp/123

ls: 無法訪問aaa: 沒有那個文件或目錄

# ls aaa 2>> /tmp/123

# cat /tmp/123

ls: 無法訪問aaa: 沒有那個文件或目錄

ls: 無法訪問aaa: 沒有那個文件或目錄

中括號[]:中括號內為字符組合,代表字符組合中的任意一個,可以是一個範圍。

示例:# ls -d test[1-3].txt

&&、||:

# command1 ; command2

# command1 && command2

# command1 || command2

使用;時,不管command1是否執行成功,都會執行command2.

使用&&時,只有command1執行成功後,command2才會執行,否則command2不執行。

使用||時,command1執行成功後則command2不執行,否則執行command2,即command1和command2中總有一條命令會執行。示例:

# touch test3;touch test1

# ls

test1 test3

# ls test2 && touch test2

ls: 無法訪問test2: 沒有那個文件或目錄

# ls test2 ||touch test2

ls: 無法訪問test2: 沒有那個文件或目錄

# ls test*

test1 test2 test3


二十五、shell特殊符號cut命令、sort_wc_uniq命令、 tee_tr_split命令、