1. 程式人生 > >shell特殊符號,cut,sort,wc,uniq,tee,tr,split命令

shell特殊符號,cut,sort,wc,uniq,tee,tr,split命令

linux

Linux shell中的特殊符號

*代表零個或多個任意字符,它的用法如下:

#ls /tmp/4_6/test*

/tmp/4_6/test1 /tmp/4_6/test22 /tmp/4_6/test333


?只代表一個任意的字符,它的用法如下:

#touch /tmp/4_6/test*

/tmp/4_6/test1 /tmp/4_6/test2 /tmp/4_6/testa


註釋符號#,這個符號在Linux中表示註釋說明,即#後面的內容都會被忽略。用法如下:

#abc=123 #aaaa

#echo $abc

123


脫義字符\

這個字符會將後面的特殊符號(如*)還原為普通字符。用法如下:

#ls –d test\*

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


再說管道符|

它的作用是將前面命令的輸出作為後面命令的輸入。並不是所有的命令都可以,一般常用對文檔操作的命令比較常用。例如cat、less、head、tail、grep、cut、sort、wc、uniq、tee、tr、split、sed、awk等。其中grep、sed和awk都是正則表達式工具。


命令cut

cut命令用來截取某一個字段,其格式為cut –d ‘分隔字符’[-cf]n,這裏n是數字。

選項:

-d 後面跟分隔符,分隔字符要有單引號括起來。

-c 後面接的是第幾個字符。

-f 後面接的是第幾個區塊。


cut命令用法如下:

#cut /etc/passwd|cut –d ‘:’ –f 1 |head -5

root

bin

dameon

adm

lp

-d選項後面加冒號作為分隔符,-f表現截取第一段,-f和1之間的空格可有可無。

示例命令如下:

#head -n2 /etc/passwd |cut -c2

o

i

#head -n2 /etc/passwd |cut -c1

r

b

#head -n2/etc/passwd|cut -c1-10

root:x:0:0

bin:x:1:1:

#head -n2 /etc/passwd|cut -c5-10

x:0:0

x:1:1:

-c選項後面可以是1個數字n,也可以是一個區間n1-n2,還可以是多個數字n1、n2、n3。

示例命令如下:

#head -n2 /etc/passwd|cut -c1,3,10

ro0

bn:


命令sort

sort命令用作排序,其格式為sort[-t分隔符][-kn1,n2][-nru],這裏n1和n2指的是數字,其

他選項的含義如下。

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

-n 表示使用純數字排序。

-r 表示反向排序。

-u表示去重復

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

如果sort不加任何選項,則從首字符向後依次按ASCII碼值進行比較,最後將它們按升序輸出。示例命令如下:

#head –n5 /etc/passwd|sort

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

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

dameon:x:2:2:dameon:/sbin:/sbin/nologin

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

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

-t選項後面跟分隔符,-k選項後跟單個數字表示對第幾個區域的字符串排序,

-n選項則表示使用純數字排序。

示例命令如下:

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

head –n5 /etc/passwd|sort -t: -k3 -n

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

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

dameon:x:2:2:dameon:/sbin:/sbin/nologin

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

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

-k選項和n2表示對n1和n2區域內的字符串排序,-r選項則表示反向排序。示例命令如下:

#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

dameon:x:2:2:dameon:/sbin:/sbin/nologin

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

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

這裏-k3,5表示對第3區域至第5區域間字符串排序。


命令wc

wc命令用於統計文檔的行數、字符數、或詞數。該命令的常用選項由-l(統計行數)、-m(統計字符數)和-w(統計詞數)。示例命令如下:

#wc /etc/passwd

45 90 2361 /etc/passwd

#wc -l /etc/passwd

45 /etc/passwd

#wc -m /etc/passwd

2361 /ett/passwd

#wc -w /etc/passwd

90 /etc/passwd

如果wc不跟任何選項,直接跟文檔,則會把行數、詞數、字符數依次輸出。

命令uniq

uniq命令用來刪除重復的行,該命令只有-c選項比較常用,它表示統計重復的行數,並把行數寫在前面,示例命令如下:

#vim testb.txt //把下面的內容寫入test.txt並保存

111

222

111

333

使用uniq前,必須先給文件排序,否則不管用。示例命令如下:

#uniq testb.txt

111

222

111

333

#sort testb.txt|uniq

111

222

333

#sort testb.txt|uniq -c

2 111

1 222

1 333

命令tee

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

#echo “aaaaaaaaaaaaaaa” |tee testb.txt

aaaaaaaaaaaaaaa

#cat testb.txt

aaaaaaaaaaaaaaa



命令tr

tr命令用於替換字符,常用來處理文檔中出現的特殊符號,如DOS文檔中出現的符號^M。該命令常用的選項有如下兩個。

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

-s 表示刪除重復的字符。

tr命令常用於把小寫字母變成大寫字母,如tr’[a-z]’’[A-Z]’。示例命令如下:

#head –n2 /etc/passwd |tr’[a-z]’’[A-Z]’

ROOT:X:O:O:ROOT:/ROOT:/BIN/BASH

BIN:X:11:BIN:/BIN:/SBIN/NOLOGIN

tr命令還可以替換一個字符,示例命令如下:

#grep ‘root’ /etc/passwd |tr ‘r’ ‘R’

Root:x:o:o:Root:/Root:/bin/bash

opeRatoR:x:11:0:opeRatoR:/Root:/sbin/nologin


命令split

split命令用於切割文檔,常用的選項為-b和-l。

-b 表示依據大小來分割文檔,單位為byte,示例命令如下:

#mkdir split_dir

#cd !$

cd split_dir

#cp /etc/passwd ./

#split –b 500 passwd

#ls

passwd xaa xab xac xad xae

如果split不指定目標文件名,則會以xaa、xab……這樣的文件名來存取切割後的文件。指定目標文件名,示例如下:

#rm –f xa*

#split –b 500 passwd 123

#ls

#123aa 123ab 123ac 123ad 123ae passwd

-l 表示依據行數來分割文檔,示例命令如下:

#rm -f 123a*

#split -l 10 passwd

#wc -l *

45 passwd

10 xaa

10 xab

10 xac

10 xad

5 xae

90 總用量


特殊符號$

符號$可以用作變量前面的標識符,還可以和!結合使用。示例命令如下:

#cd ..

#ls testb.txt

testb.txt

#ls !$

ls testb.txt

testb.txt

!$表示上條命令的最後一個變量,本例中上條命令最後是testb.txt,那麽在當前命令下輸入!$則表示testb.txt。


特殊符號;

通常,我們在一行命令中輸入一個命令,然後回車就運行了。如果想在一行中運行兩個或兩個以上的命令,需要在命令之間加符號;。示例命令如下:

#mkdir testb.txt ; touch test1.txt ; touch test2.txt ; ls –d test*


特殊符號~

符號~代表用戶的家目錄,root用戶的家目錄是/root,普通用戶的家目錄是/home/username。示例命令如下:

#cd ~

#pwd

/root

#su ccj

#cd ~

#pwd

/home/ccj


特殊符號&

如果想把一條命令放到後臺執行,則需要加上符號&,它通常用於命令運行時間較長的情況。比如,可以用在sleep後,如下所示:

#sleep 30 &

[1]3008

#jobs

[1]+ 運行中 sleep 30 &


重定向符號>、>>、2>和2>>

>和>>分別表示取代和追加的意思。當我們運行一個命令報錯時,報錯信息會輸出到當前屏幕。如果想重定向到一個文本,則要用重定向符號2>或者2>>,它們分別表示錯誤重定向和錯誤追加重定向。示例命令如下:

#ls aaaa

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

#ls aaaa 2> /tmp/error

#cat /tmp/error

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

#ls aaaa 2>> /tmp/error

#cat /tmp/error

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

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


中括號[]

中括號內為字符組合,代表字符組合中的任意一個,可以是一個範圍(1-3,a-z),用法如下:

#cd /tmp/10

#ls –d test*

test1.txt test2.txt testb.txt testdir

#ls –d test[1-3].txt

test1.txt test2.txt

#ls –d test[12b].txt

test1.txt test2.txt testb.txt

#ls –d test[1-9].txt

test1.txt test2.txt

#ls –d test[1-9a-z].txt

test1.txt test2.txt testb.txt


特殊符號&& ||

#命令1;命令2

#命令1&&命令2

#命令1||命令2

使用;時,不管命令1是否執行成功,都會執行命令2。

使用&&時,只有命令1執行成功,才會執行命令2,否則不執行命令2。

使用||時,命令1執行成功後則不執行命令2,否則執行命令2。


shell特殊符號,cut,sort,wc,uniq,tee,tr,split命令