[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)上下文格式顯示
#前兩行主要列出需要比較的檔案名和檔案的時間戳