天天看點

SHELL基礎工具

[toc]

一、文本處理工具

1.grep行過濾工具

文法:

`grep '關鍵字' filename

options:

-i #不區分大小寫
-v #取反
-w #按單詞搜尋
-o #列印比對關鍵字
-c #統計比對到的行數
-n #顯示原行号
-r #層級周遊目錄查找
-A #顯示比對行及後面多少行
-B #顯示比對行及前面多少行
-C #顯示比對行前後多少行
-l #隻列出比對的檔案名
-L #列出不比對的檔案名
-e #使用正則比對
-E #使用擴充正則比對
^  #以關鍵字開頭
$  #以關鍵字結尾
^$ #比對空行
--color=auto #關鍵字加上顔色           

别名設定顔色顯示

#臨時設定
alias grep='grep --color=auto'

#永久設定
#全局:
vim /etc/bashrc
alias grep='grep --color=auto'
#source /etc/bashrc

#局部:
vim ~/.bashrc
alias grep='grep --color=auto'
#source ~/.bashrc           

2.cut列截取工具

cut <option> filename

-c #以字元為機關進行分割
-d #自定義分隔符,預設為制表符\t
-f #與-d一起使用,指定截取哪個區域           

例子:

cut -d: -f1 1.txt      #以冒号為分隔符,截取第一列内容
cut -d: -f1,3,5    1.txt  #以冒号為分隔符,截取1,3,5列内容
cut -c1-5 1.txt           #截取檔案中每行的1-5個字元
cut -c5- 1.txt            #截取第五個字元後面所有字元           

例題:

用cut或grep過濾出目前系統的運作級别"runlevel"

runlevel | cut -d '' -f2

runlevel | cut -d ' ' -f2

grep -v '^#' /etc/inittab |cut -d: -f2

grep "initdefault:$" /etc/inittab|cut -c4           

3.sort工具

sort工具用于排列,它将檔案的每一行作為一個機關,從首字元向後,依次按ascii碼進行比較,最後按升序輸出

options:

-u #去除重複行
-r #降序排列
-o #将排列結果輸出到檔案,類似重定向>
-n #以數字排序,預設是按字元排序
-t #分隔符
-k #第N列
-b #忽略前導空格
-R #随機排序,每次運作的結果均不同           
#按照使用者的uid進行升序排列
sort -n -t: -k3 /etc/passwd

#按照使用者的uid進行降序排列
sort -rn -t: -k3 /etc/passwd

#按照使用者的uid進行降序排列并将結果輸出到1.txt中
sort -rn -t: -k3 /etc/passwd -o 1.txt           

4.uniq工具-去除連續的重複行

-i #忽略大小寫
-c #統計重複行此時
-d #隻顯示重複行           
uniq -c 1.txt  
      2 hello world
      1 HELLO world
      1 hello WORLD
uniq -ci 1.txt 
      4 hello world           

5.tee工具--從标準輸入讀取并寫入标準輸出和檔案

-a #雙向追加重定向           
[test@lfs ~]$ echo hello world|tee 1.txt    
hello world
[test@lfs ~]$ cat 1.txt 
hello world
[test@lfs ~]$ echo hello world|tee -a 1.txt 
hello world
[test@lfs ~]$ cat 1.txt                     
hello world
hello world           

6.diff工具-逐行比較檔案的不同

\#diff描述兩個檔案不同的方式是告訴我們“怎樣改變第一個檔案之後,與第二個檔案比對”

diff <option> file1 file2

-b #不檢查空格
-B #不檢查空白行
-i #不檢查大小寫
-w #忽略所有的空格
--normal #正常格式顯示
-c #上下文格式顯示
-u #合并格式顯示           

\#比較兩個普通檔案的異同

#檔案準備
[test@lfs ~]$ cat file1
hello world
123456
123123
aaa
[test@lfs ~]$ cat file2
HELLO WOLRD
AAA
123123
12345
bbb           

(1)正常顯示

diff file1 file2
#diff(目的) file1 {如何改變才能和} file2 {比對}           

(2)上下文格式顯示

#前兩行主要列出需要比較的檔案名和檔案的時間戳           

繼續閱讀