Linux文本過濾與處理命令

     文本處理命令在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 當比較的兩個文件相同時報告信息

相關文章
相關標籤/搜索