linux下幾種常用的文本處理工具
1.cat
cat我們在早期的學習中最常見的命令之一,但我們用到的只是cat命令本身,如cat /etc/passwd,查看/etc/passwd 的內容,沒有用到cat的選項,其實cat命令是有選項的,只不過我們用的並不多,具體參數如下:
先用vim編輯一個簡單的文本,helloworld,內容即是helloworld,這裏只是為了展示,具體vim的用法會在下面介紹。
cat /app/block/helloworld //查看helloworld文本內容
-E 查看文本時顯示文本中的liux換行符$
cat /app/block/helloworld //顯示helloworld中的換行符$
-v 查看windows文本時顯示Windows中的換行符^M
使用rz命令上傳windows系統中的helloworld.txt到/app/block下。
cat /app/block/helloworld.txt //顯示helloworld.txt中的換行符^M
-T 顯示Tab
cat -T /app/block/helloworld //顯示helloworld中的Tab
-n顯示的結果前增加行號
cat -n /app/block/helloworld //顯示的helloworld中增加行號
-b顯示的結果之前增加行號,但空行不參加編號
cat -b /app/block/helloworld //helloworld中的空行不編號
-s壓縮連續空行成一行
需要在文本後加入幾個空行
cat -s /app/block/helloworld //壓縮helloworld中連續空行為一行
2.tac
tar命令的功能只有一個,即是將文本中的內容倒序顯示
tac /app/block/helloworld //倒序顯示helloworld
3.rev
rev的功能也只有一個,即是對標準輸入的內容每行倒著顯示,支持管道。
cat /app/block/helloworld|rev //helloworld每行倒著顯示
4.head
head有兩個常用的參數,head是頭的意思,就是對文本頭部分進行的操作。
-n 打印文本開頭的n行
cat /app/block/helloworld|head -1 //打印helloworld的第一行
-c n 取一段字符的前n字節
echo helloworld|head -c 5 //取helloworld的前5個字節
5.tail
tail與head相似,同樣有兩個常用的參數,但tail是尾巴的意思,就是對文本尾部進行操作。
-n 打印文本結尾的n行
cat /app/block/helloworld|tail -1 //打印helloworld的最後一行
-c n 取一段字符的後n字節
echo helloworld|tail -c 5 // 取helloworld的後5個字節
tail取最後n個字符包含換行符$.
6.cut
cut即是剪切的意思,剪切文本中的內容,一般常用的選項有四個,而,-d,-f,一般連用
-d+參數1(d +中間沒空格)-f+參數2 以參數1作為分割符,剪切第參數2列
hellow文本
cat /app/block/helloworld|cut -d‘ ‘ -f1 //取出helloworld中以空格為間隔的第一列
-f選項後可以指定一個範圍,並不一定是一個參數,如:
cat /app/block/helloworld|cut -d‘ ‘ -f1-3, 5 //取出helloworld中以空格為間隔的第一列到第三列和第5列
-c m/m-n/m-n,k取出字符串中第m/m-n/m-n,k字符
echo hi hello world i am fun|cut -c 1-3,5 //顯示字符串中第1-3,和第五個字符
cut --output-delimiter="#" 輸出分隔符
7.past
paste命令的功能是用來合並,可以單獨使用,也可以配合選項使用,有兩個選項
paste /app/block/helloworld /app/block/helloworld.txt //合並helloworld和helloworld.txt
-d‘Q‘ f1 f2 合並後以Q作為分隔符,Q可以是任何字符
paste -d‘|‘ /app/block/helloworld /app/block/helloworld.txt //合並helloworld和helloworld.txt,並用|作為間隔符
-s 將多行內容多行變一行
paste -s /app/block/helloworld //將helloworld中的多行內容變為一行
8.wc
-l 顯示文本的行數
cat /app/block/helloworld|wc -l //顯示helloworld的行數
-m 顯示文本中的字符數
cat /app/block/helloworld |wc -m //顯示helloworld中的字符數
-c 顯示文本中的字節數
cat /app/block/helloworld |wc -c //顯示helloworld中的字節數
-w 顯示文本中單詞數
cat /app/block/helloworld |wc -w //顯示helloworld中的單詞數
-L 顯示文本中最長行的長度
cat /app/block/helloworld |wc -L //顯示helloworld中最長行的長度
2.文本三劍客之grep
grep是一個對文本進行過濾的的文本處理工具,只能過濾出內容,他有下面這些選項:
-v 關鍵字 顯示不包含關關鍵字的行,取反
cat /app/block/helloworld|grep -v hello //過濾出不包含hello的行
-i 關鍵字 忽略關鍵字的大小寫
cat /app/block/helloworld|grep -i hello //過濾出hello,並且不區分其中字母的大小寫
-n 顯示的結果每行前增加行號
cat /app/block/helloworld |grep -n hello //過濾出含有hello的行,並且在結果上加上行號
-c 僅顯示找出的結果的行數
cat /app/block/helloworld |grep -c hello //過濾hello但不現實結果,只顯示過濾出hello的行數
-o 僅顯示匹配到的關鍵字,不顯示同行的其他內容
cat /app/block/helloworld |grep -o hello //只顯示過濾出的關鍵字hello,不現實其他的內容
-A # 顯示關鍵字行及向下的n行
cat /app/block/helloworld |grep -A2 hello //過濾出包含hello的行以及其下一行
-B # 顯示關鍵字行及向上的n行
cat /app/block/helloworld |grep -B hello //過濾出包含hello的行以及上一行
-C # 顯示關鍵字行及向上n行和向下的n行
cat /app/block/helloworld |grep -C1 hello //過濾出包含hello的行以及其下一行和上一行
-e 關鍵字1 -e 關鍵字2 …… 多個關鍵字之間是或的關系
cat /app/block/helloworld |grep -e hello -e Hello //過濾出包含hello或者Hello的行
-w 關鍵字 匹配整個單詞
cat /app/block/helloworld |grep -w hello //過濾出只含有hello單詞的行
-E 等於egrep 使用擴展正則表達式
加上-E或者使用egrep過濾即表示使用擴展正則表達
-F 等於fgrep 不使用正則表達式
正則表達式在下篇博客會具體介紹。
linux下幾種常用的文本處理工具