Linux下常用文字處理命令大全

才智咖 人氣:1.61W

Linux下面有很多經典的非常有用的命令,其中處理文字的命令就有很多。下面就讓我們一起看看這些經典的Linux文字處理命令有哪些吧。

一. sort

檔案排序, 通常用在管道中當過濾器來使用. 這個命令可以依據指定的關鍵字或指定的字元位置, 對檔案行進行排序. 使用-m選項, 它將會合並預排序的輸入檔案. 想了解這個命令的全部引數請參考這個命令的info頁.

二. tsort

拓撲排序, 讀取以空格分隔的有序對, 並且依靠輸入模式進行排序.

三. uniq

這個過濾器將會刪除一個已排序檔案中的重複行. 這個命令經常出現在sort命令的管道後邊.

四. expand, unexpand

expand命令將會把每個tab轉化為一個空格. 這個命令經常用在管道中.

unexpand命令將會把每個空格轉化為一個tab. 效果與expand命令相反.

五. cut

一個從檔案中提取特定域的工具. 這個命令與awk中使用的print $N命令很相似, 但是更受限. 在指令碼中使用cut命令會比使用awk命令來得容易一些. 最重要的選項就是-d(欄位定界符)和-f(域分隔符)選項.

六. paste

將多個檔案, 以每個檔案一列的形式合併到一個檔案中, 合併後文件中的每一列就是原來的一個檔案. 與cut結合使用, 經常用於建立系統log檔案.

七. join

這個命令與paste命令屬於同類命令. 但是它能夠完成某些特殊的目地. 這個強力工具能夠以一種特殊的形式來合併兩個檔案, 這種特殊的形式本質上就是一個關聯資料庫的簡單版本.

join命令只能夠操作兩個檔案. 它可以將那些具有特定標記域(通常是一個數字標籤)的行合併起來, 並且將結果輸出到stdout. 被加入的檔案應該事先根據標記域進行排序以便於能夠正確的匹配.

八. head

把檔案的頭部內容列印到stdout上(預設為10行, 可以自己修改). 這個命令有一些比較有趣的選項.

九. tail

將一個檔案結尾部分的內容輸出到stdout中(預設為10行). 通常用來跟蹤一個系統logfile的修改情況, 如果使用-f選項的話, 這個命令將會繼續顯示新增到檔案中的行.

十. wc

wc可以統計檔案或I/O流中的”單詞數量”:

十一. fold

將輸入按照指定寬度進行折行. 這裡有一個非常有用的選項-s, 這個選項可以使用空格進行斷行(譯者: 事實上只有外文才需要使用空格斷行, 中文是不需要的)(請參考例子 12-23和例子 A-1).

十二. fmt

一個簡單的檔案格式器, 通常用在管道中, 將一個比較長的文字行輸出進行”折行”.

十三. col

這個命令用來濾除標準輸入的反向換行符號. 這個工具還可以將空白用等價的tab來替換. col工具最主要的應用還是從特定的文字處理工具中過濾輸出, 比如groff和tbl. (譯者: 主要用來將man頁轉化為文字.)

十四. column

列格式化工具. 通過在合適的位置插入tab, 這個過濾工具會將列型別的文字轉化為”易於列印”的'表格式進行輸出.

十五. colrm

列刪除過濾器. 這個工具將會從檔案中刪除指定的列(列中的字串)並且寫到檔案中, 如果指定的列不存在, 那麼就回到stdout. colrm 2 4

Caution: 如果這個檔案包含tab和不可列印字元, 那將會引起不可預期的行為. 在這種情況下, 應該通過管道的手段使用expand和unexpand來預處理colrm.

十六. nl

計算行號過濾器. nl filename將會把filename檔案的所有內容都輸出到stdout上, 但是會在每個非空行的前面加上連續的行號. 如果沒有filename引數, 那麼就操作stdin.

nl命令的輸出與cat -n非常相似, 然而, 預設情況下nl不會列出空行.

十七. pr

格式化列印過濾器. 這個命令會將檔案(或stdout)分頁, 將它們分成合適的小塊以便於硬拷貝列印或者在螢幕上瀏覽. 使用這個命令的不同的引數可以完成好多工, 比如對行和列的操作, 加入行, 設定頁邊, 計算行號, 新增頁首, 合併檔案等等. pr命令集合了許多命令的功能, 比如nl, paste, fold, column, 和expand.

pr -o 5 –width=65 fileZZZ | more 這個命令對fileZZZ進行了比較好的分頁, 並且列印到螢幕上. 檔案的縮排被設定為5, 總寬度設定為65.

一個非常有用的選項-d, 強制隔行列印(與sed -G效果相同).

十八. gettext

GNU gettext包是專門用來將程式的輸出翻譯或者本地化為不同國家語言的工具集. 在最開始的時候僅僅支援C語言, 現在已經支援了相當數量的其它程式語言和指令碼語言.

想要檢視gettext程式如何在shell指令碼中使用. 請參考info頁.

十九. msgfmt

一個產生二進位制訊息目錄的程式. 這個命令主要用來本地化.

二十. iconv

一個可以將檔案轉化為不同編碼格式(字符集)的工具. 這個命令主要用來本地化.

二十一. recode

可以認為這個命令是上邊iconv命令的專業版本. 這個非常靈活的並可以把整個檔案都轉換為不同編碼格式的工具並不是Linux標準安裝的一部分.

二十二. TeX, gs

TeX和Postscript都是文字標記語言, 用來對列印和格式化的視訊顯示進行預拷貝.

TeX是Donald Knuth精心製作的排版系統. 通常情況下, 通過編寫指令碼的手段來把所有的選項和引數封裝起來一起傳到標記語言中是一件很方便的事情.