1. 程式人生 > >linux下幾種常用的文本處理工具

linux下幾種常用的文本處理工具

支持 字符數 windows head 連續 ech str 有用 alt

1.幾種常見的文本處理命令

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下幾種常用的文本處理工具