文本處理命令在Linux的使用過程當中也是很基礎的知識,我來總結一下linux文本處理命令的使用。linux
基礎命令:git
cat / more / less / grep / head / tail / wc / uniq / cut / sort / join / paste tr / tee / split / spell / diff / printf /算法
1.cat 鏈接文件並顯示內容less
-n 對輸出的文本進行編號
-b 對輸出的文本進行編號,可是不對空白行編號
-s 將兩行以上的空白行替換爲一行空白行
-E 在每一行的結尾顯示「$」
-T 用「^」I代替「TAB」做爲顯示
ide
2.more 文件內容分屏查看spa
-d 當用戶錯誤輸入時產生提示符
-f 計算實際行數
-p 不卷頁顯示,而是清屏,而後顯示內容
+/<字符串>搜尋指定字符串,並今後處開始顯示
+num 從指定行開始顯示日誌
3.less 分屏顯示文件內容
-e 當文件顯示結束後,自動離開
-f 強迫打開特殊文件,例如外圍設備代號、目錄和二進制文件
-g 只標誌最後搜索的關鍵詞
-i 忽略搜索時的大小寫
-m 顯示相似more命令的百分比
-N 顯示每行的行號
-o<文件名> 將less 輸出的內容在指定文件中保存起來
排序
選擇參數
按鍵功能以下:
b 向後翻一頁
d 向後翻半頁
h 顯示幫助界面
Q 退出less 命令
u 向前滾動半頁
y 向前滾動一行
空格鍵 滾動一行
回車鍵 滾動一頁遞歸
4.head 顯示文件頭部內容ip
將打印文件的前10行道標準輸出,若是不指定文件,將從標準輸入中輸入
-c<字節> 顯示文件前N字節數
-n<行數> 顯示文件的前N行數
5.tail 輸出文件尾部內容
-f 循環讀取,當文件內容增長時,持續顯示新增在後面的內容,經常使用來監控日誌文件
-q 不顯示處理信息
-v 顯示詳細的處理信息
-c<數目> 顯示的字節數
6.wc 統計文件的字節數,單詞數和行數
-c 顯示字母數
-l 顯示行數
-w 顯示單詞數
7.uniq 報告或忽略文件中的重複行
-c 顯示重複次數
-d 顯示重複行
-u 顯示沒有重複的行
8.cut 剪切刪除文件中的指定段
-b=<列表> 只輸出指定的字節數 <--bytes>
-c=<列表> 只輸出指定的字符 <--characters>
-d= 使用定界符代替TAB鍵 <--delimiter>
-f=<列表> 只輸出指定的域。
9.sort 對文件進行行排序
-b 忽略行前的空格
-c 檢查是否已排序過
-d 排序時只識別英文數字及空格
-f 把小寫字母看做大寫字母
-m 合併排序好的文件
-n 按照數值排序
-r 逆序排序
10 join 文件1 文件2
針對每一對具備相同內容的輸入行,整合爲一行寫到標準輸出, 默認的內容鏈接區塊是由第一個空白符表明的分界符號。當文件1 或文件2 都被指定爲"-"時,程序將從標準輸入讀取數據。
將兩個文件 內容相同的行鏈接起來
root@snail-hnlinux:~# cat test1 //顯示文件test1 的內容
a 01
b 02
c 03
d 04
e 05
root@snail-hnlinux:~# cat test2 //顯示文件test2 的內容
a xxx
b www
c jjj
d kkk
e lll
root@snail-hnlinux:~#
root@snail-hnlinux:~# join test1 test2 //鏈接兩個文件
a 01 xxx
b 02 www
c 03 jjj
d 04 kkk
e 05 lll
root@snail-hnlinux:~# join test2 test1
a xxx 01
b www 02
c jjj 03
d kkk 04
e lll 05
11.split 將大文件切割成爲小文件
-d 使用數字而不是字母做爲切割後的小文件的後綴;
-v 顯示詳細的處理信息
-b<字節> 每一個分割文件的大小
-l<行數> 指定切割的行數做爲切割文件的單位;
-C <數字> 指定輸出到每個文件的每一行的大小,數字後綴能夠是
b: 512(blocks)
K: 1024(kibiBytes)
KB: 1000(kiloBytes)
M: 1024*1024(mebiBytes)
MB: 1000*1000(megaBytes)
G: 1024*1024*1024(gibiBytes)
GB: 1000*1000*1000(gibaBytes)
12.tr
從標準輸入中替換、縮減和/或刪除字符,並將結果寫到標準輸出。
-d, --delete 刪除匹配SET1 的內容,並不做替換
-s, --squeeze-repeats 若是匹配於SET1 的字符在輸入序列中存在連續的
重複,在替換時會被統一縮爲一個字符的長度
-t, --truncate-set1 先將SET1 的長度截爲和SET2 相等
SET 是一組字符串,通常均可按照字面含義理解。解析序列以下:
\NNN 八進制值爲NNN 的字符(1 至3 個數位)
\\ 反斜槓
\a 終端鳴響
\b 退格
\f 換頁
\n 換行
\r 回車
\t 水平製表符
\v 垂直製表符
字符1-字符2 從字符1 到字符2 的升序遞增過程當中經歷的全部字符
[字符*] 在SET2 中適用,指定字符會被連續複製直到吻合設置1 的長度
[字符*次數] 對字符執行指定次數的複製,若次數以 0 開頭則被視爲八進制數
[:alnum:] 全部的字母和數字
[:alpha:] 全部的字母
[:blank:] 全部呈水平排列的空白字符
[:cntrl:] 全部的控制字符
[:digit:] 全部的數字
[:graph:] 全部的可打印字符,不包括空格
[:lower:] 全部的小寫字母
[:print:] 全部的可打印字符,包括空格
[:punct:] 全部的標點字符
[:space:] 全部呈水平或垂直排列的空白字符
[:upper:] 全部的大寫字母
[:xdigit:] 全部的十六進制數
[=字符=] 全部和指定字符相等的字符
13 tee 將輸入的內容複製到標準輸出。
14 paste 會把每一個文件以列對列的方式,一列列地加以合併
-d 指定間隔字符
[root@hnlinux lx138.com]# cat a.txt //合併文件的列
123
456
789
1010
10000
111111
000000
5555555
6666666
[root@hnlinux lx138.com]# cat b.txt //合併文件的列
aaa
bbb
bbb
bsss
ssss
weeee
rrrrrr
jjjjjjj
ooooooo
[root@hnlinux lx138.com]# paste a.txt b.txt //合併文件的列
123 aaa
456 bbb
789 bbb
1010 bsss
10000 ssss
111111 weeee
000000 rrrrrr
5555555 jjjjjjj
6666666 ooooooo
[root@hnlinux lx138.com]#
15 diff 以逐行的方式,比較文本文件的異同處。所是指定要比較目錄,則diff會比較目錄中相同文件名的文件,但不會比較其中子目錄 -b 忽略空格 -B 忽略空白行 -i 忽略大小寫 --brief 只報告兩個文件是否相同,不報告詳細的不一樣信息 -c 使用上下文輸出格式 -d 改變算法,使得diff命令可能找到一個更小的文件差別 -e 產生一個將文件1變成文件2的「ed script」 -r 比較目錄時遞歸比較子目錄 -q 不報告差別,只說明二者內容是否有差別 -s 當比較的兩個文件相同時報告信息