1. 程式人生 > >linux shell基礎-3

linux shell基礎-3

配置文件 service 服務器 linux 防火墻

  • 特殊符號

  • cut

  • sort

  • wc

  • uniq

  • tee

  • tr

  • split

特殊符號

*   任意個任意字符     
?  任意一個字符      
#   註釋字符     
\   脫義字符     
|   管道符

cut

cut命令用來顯示行中的指定部分,刪除文件中指定字段。cut經常用來顯示文件的內容

用法:

cut    參數    文件(指定要進行內容過濾的文件)

參數:

-b:僅顯示行中指定直接範圍的內容;
-c:僅顯示行中指定範圍的字符;
-d:指定字段的分隔符,默認的字段分隔符為“TAB”;
-f:顯示指定字段的內容;

實例:

[[email protected] text]# cat test.txt 
No Name Mark Percent
01 tom 69 91
02 jack 71 87
03 alex 68 98    

使用 -f 選項提取指定字段:

[[email protected]
/* */ text]# cut -f 1 test.txt No 01 02 03 [[email protected] text]# cut -f2,3 test.txt Name Mark tom 69 jack 71 alex 68 使用 -d 選項指定字段分隔符: [[email protected] text]# cat test2.txt No;Name;Mark;Percent 01;tom;69;91 02;jack;71;87 03;alex;68;98 [[email protected] text]# cut -f2 -d";" test2.txt Name tom jack alex

指定字段的字符或者字節範圍:

cut命令可以將一串字符作為列來顯示:

N-:    從第N個字節、字符、字段到結尾;
N-M:   從第N個字節、字符、字段到第M個(包括M在內)字節、字符、字段;
-M:    從第1個字節、字符、字段到第M個(包括M在內)字節、字符、字段。  

上面是記法,結合下面選項將摸個範圍的字節、字符指定為字段:

-b 表示字節;
-c 表示字符;
-f 表示定義字段。

示例

[[email protected] text]# cat test.txt 
abcdefghijklmnopqrstuvwxyz

打印第1個到第3個字符:

[[email protected]
/* */ text]# cut -c1-3 test.txt abc 打印前2個字符: [[email protected] text]# cut -c-2 test.txt ab 打印從第5個字符開始到結尾: [[email protected] text]# cut -c5- test.txt efghijklmnopqrstuvwxyz

sort

將文件進行排序,並將排序結果標準輸出

用法:

sort    參數    文件(指定待排序的文件列表)

參數:

-b:忽略每行前面開始出的空格字符;
-c:檢查文件是否已經按照順序排序;
-d:排序時,處理英文字母、數字及空格字符外,忽略其他的字符;
-f:排序時,將小寫字母視為大寫字母;
-n:依照數值的大小排序;
-r:以相反的順序來排序;
-t<分隔字符>:指定排序時所用的欄位分隔字符;

實例:

sort將文件/文本的每一行作為一個單位,相互比較,比較原則是從首字符向後,依次按ASCII碼值進行比較,最後將他們按升序輸出。 

# cat sort.txt
aaa:10:1.1
ccc:30:3.3
ddd:40:4.4
bbb:20:2.2
eee:50:5.5
eee:50:5.5

# sort sort.txt
aaa:10:1.1
bbb:20:2.2
ccc:30:3.3
ddd:40:4.4
eee:50:5.5
eee:50:5.5

忽略相同行使用-u選項或者uniq:

# cat sort.txt
aaa:10:1.1
ccc:30:3.3
ddd:40:4.4
bbb:20:2.2
eee:50:5.5
eee:50:5.5

# sort -u sort.txt
aaa:10:1.1
bbb:20:2.2
ccc:30:3.3
ddd:40:4.4
eee:50:5.5

或者

# uniq sort.txt
aaa:10:1.1
ccc:30:3.3
ddd:40:4.4
bbb:20:2.2
eee:50:5.5

sort的-n、-r、-k、-t選項的使用:

# cat sort.txt
AAA:BB:CC
aaa:30:1.6
ccc:50:3.3
ddd:20:4.2
bbb:10:2.5
eee:40:5.4
eee:60:5.1

#將BB列按照數字從小到大順序排列:
# sort -nk 2 -t: sort.txt
AAA:BB:CC
bbb:10:2.5
ddd:20:4.2
aaa:30:1.6
eee:40:5.4
ccc:50:3.3
eee:60:5.1

#將CC列數字從大到小順序排列:
# sort -nrk 3 -t: sort.txt
eee:40:5.4
eee:60:5.1
ddd:20:4.2
ccc:50:3.3
bbb:10:2.5
aaa:30:1.6
AAA:BB:CC

# -n是按照數字大小排序,-r是以相反順序,-k是指定需要愛排序的欄位,-t指定欄位分隔符為冒號

wc

wc命令用來計算數字。利用wc指令我們可以計算文件的Byte數、字數或是列數,若不指定文件名稱,或是所給予的文件名為“-”,則wc指令會從標準輸入設備讀取數據。

用法:

wc  參數    文件(需要統計的文件列表)

參數:

-c:只顯示Bytes數;
-l:只顯示列數;
-w:只顯示字數。

uniq

uniq命令用於報告或忽略文件中的重復行,一般與sort命令結合使用

用法:

uniq    參數    輸入輸出文件

參數:

-c:    在每列旁邊顯示該行重復出現的次數;
-d:    僅顯示重復出現的行列;

實例:

刪除重復行:

uniq file.txt
sort file.txt | uniq
sort -u file.txt   

只顯示單一行:

uniq -u file.txt
sort file.txt | uniq -u   

統計各行在文件中出現的次數:

sort file.txt | uniq -c    

在文件中找出重復的行:

sort file.txt | uniq -d

tee

tee命令用於將數據重定向到文件,把數據重定向到給定文件和屏幕上。

用法:

tee 參數 文件(指定輸出重定向的文件)

參數:

-a:向文件中重定向時使用追加模式;

tr

tr命令可以對來自標準輸入的字符進行替換、壓縮和刪除。它可以將一組字符變成另一組字符

split

將一個大文件分割成很多個小文件

參數:

-b:值為每一輸出檔案的大小,單位為 byte。
-l:值為每一輸出檔的列數大小。
-d:使用數字作為後綴。

實例:

生成一個大小為100KB的測試文件:

[[email protected] split]# dd if=/dev/zero bs=100k count=1 of=date.file
1+0 records in
1+0 records out
102400 bytes (102 kB) copied, 0.00043 seconds, 238 MB/s   

使用split命令將上面創建的date.file文件分割成大小為10KB的小文件:

[[email protected] split]# split -b 10k date.file 
[[email protected] split]# ls
date.file  xaa  xab  xac  xad  xae  xaf  xag  xah  xai  xaj
文件被分割成多個帶有字母的後綴文件,如果想用數字後綴可使用-d參數,同時可以使用-a length來指定後綴的長度:

[[email protected] split]# split -b 10k date.file -d -a 3
[[email protected] split]# ls
date.file  x000  x001  x002  x003  x004  x005  x006  x007  x008  x009   

為分割後的文件指定文件名的前綴:

[[email protected] split]# split -b 10k date.file -d -a 3 split_file
[[email protected] split]# ls
date.file  split_file000  split_file001  split_file002  split_file003  split_file004  split_file005  split_file006  split_file007  split_file008  split_file009

linux shell基礎-3