Linux文本處理工具

Linux文本處理工具

文件內容查看的工具:cat tac rev

cat?[options]?[filename]
????-E?//顯示行結束符
????-n?//對顯示出的行編號
????-A?//顯示所有控制符
????-b?//非空行編號
????-S?//壓縮連續的空行為一行

tac?//用于將文件已行為單位的反序輸出,即第一行最后顯示,最后一行先顯示
rev?//rev命令將文件中的每行內容以字符為單位反序輸出,即第一個字符最后輸
????????出,最后一個字符最先輸出

分頁查看文本內容: more less

more是基于vi編輯器的文本過濾器,less的功能和more差不多,使用less或more顯示時,有相同的功能鍵:
– 按Space鍵:顯示文本的下一屏內容
– 按Enier鍵:只顯示文本的下一行內容
– 按H鍵:顯示幫助屏,該屏上有相關的幫助信息
– 按B鍵:顯示上一屏內容
– 按Q鍵:退出more命令

more?-n?//指定每屏顯示n行?
?????-d?//顯示“[press?space?to?continue,'q'?to?quit.]”和“[Press?'h'?for?instructions]”?
?????-c?//不進行滾屏操作每次刷新這個屏幕?
?????-s?//將多個空行壓縮成一行顯示?
?????-u?//禁止下劃線?
?????+n?//從指定數字n的行開始顯示

less?-e?//文件內容顯示完畢后,自動退出?
?????-f?//強制顯示文件?
?????-g?//不加亮顯示搜索到的所有關鍵詞,僅顯示當前顯示的關鍵字,以提高顯示速度?
?????-l?//搜索時忽略大小寫的差異?
?????-N?//每一行行首顯示行號?
?????-s?//將連續多個空行壓縮成一行顯示?
?????-S?//在單行顯示較長的內容,而不換行顯示

顯示文本前或后行內容

head?[options]?[filename]
????????用于顯示文件開頭的內容,默認顯示10行
?????-n?//顯示文件開頭n行
?????-c?n?//顯示文件開頭內容n個字符

tail?[options]?[filename]
????????用于顯示文件末尾的內容,默認顯示10行
?????-c?n?//顯示文件末尾n個字符
?????-n?//顯示文件末尾n行
?????-f?//跟蹤顯示文件追加的內容,常用作日志監控

文本抽取工具

cut?用來顯示行中制定部分,刪除指定字段
?????-b?//僅顯示行中制定范圍字符???????????
?????-d?//指定字段分隔符
?????-f?//顯示制定字段內容和-d組合使用
????????如cut?-d:?-f7?//表示以冒號為分隔符,取第七列的字段
?????-c?//顯示指定范圍的字符,用法:
????????cut?-c-5?filename?//顯示文件中每行的前五個字符
????????cut?-c5-?filename?//顯示文件中每行從第五個字符開始到最后的字符

分析文本

sort?文本排序工具???????????
?????-t?//分隔符
?????-k?//以分隔符的第幾列排序
?????-n?//以數字方式排序
?????-r?//倒序排列
?????-u?//去除重復項
?????-f?//忽略大小寫????????

wc?文本統計工具
????默認顯示顯示行數?單詞數?及?字節數
?????-l?//顯示行數
?????-w?//顯示單詞數
?????-c?//顯示字節數
?????-m?//顯示字符數

文本去重工具

uniq?去除連續的重復行,僅保留一行
?????-u?//去除連續的重復行,不保留
?????-d?//僅顯示重復的行,去除不重復的行
?????-c?//顯示的結果前顯示重復的次數

Linux文本處理三劍客 ? grep sed awk

grep(global search regular expression(RE)and print out the line,全局搜索正則表達式(re)并打印出該行),
它是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹配的行打印出來

  • 選項
grep?--color=auto?//關鍵字高亮顯示
?????-v?//反選
?????-n?//顯示行號
?????-c?//顯示匹配行的數量
?????-i?//忽略大小寫
?????-q?//靜默輸出,即什么也不輸出
?????-A?n?//顯示關鍵字及其下n行
?????-B?n?//顯示關鍵字及其上n行
?????-C?n?//顯示關鍵字及其上下n行
?????-e?//實現多個選項間的邏輯or關系
?????-w?//匹配整個單詞
?????-E?或?egrep?//使用擴展正則
?????-F?或?fgrep?//不使用正則

sed是一種流編輯器,它是文本處理中非常中的工具,能夠配合正則表達式使用


  • 命令格式
sed?[options]?'command'?file(s)?
sed?[options]?-f?scriptfile?file(s)
  • 命令選項
sed?-i?更改原文件
????-i.bak?在更改前將原文件備份為.bak
????-n?不打印
????-e?多模式
????-f?sed.txt?指定scripts的文件
????-r?指定擴展正則
????sed命令
????p打印
????d刪除
????a在指定行后增加
????i在指定行前增加
????c替換指定行
????w將模式空間的行寫入指定文件
????r將文件中的內容讀入模式空間
????=:?為模式空間中的行打印行號
????!:模式空間中匹配行取反處理
  • 高級用法
seq?9?|sed?'n;d'?打印奇數行
seq?9?|sed?-n?'n;p'?打印偶數行
seq?9?|sed?'1!G;h;$!d'??倒序顯示?或?seq?9?|sed?-n?'1!G;h;$p'
seq?9?|sed?'N;D'?顯示最后一行?或?seq?9?|sed?'$!d'
seq?9?|sed?'$!N;$!D'??顯示最后兩行
seq?9?|sed?'G'?每一行后加一個空行
seq?9?|sed?'g'?原有的行全替換為空行
seq?9?|sed?'/^$/d;G'?使每一行后有一個空行

awk 是一種更具靈活性的編程語言,用于在linux/unix下對文本和數據進行處理。數據可以來自標準輸入(stdin)、一個或多個文件,或其它命令的輸出。它支持用戶自定義函數和動態正則表達式等功能,是linux/unix下的一個強大編程工具。它可以在命令行中使用,但更多是作為腳本來使用。


  • 命令格式
awk?[options]?'script'?var=value?file(s)?
awk?[options]?-f?scriptfile?var=value?file(s)
  • 選項
-F?fs???fs指定輸入分隔符,fs可以是字符串或正則表達式,如-F:?
-v?var=value???賦值一個用戶定義變量,將外部變量傳遞給awk?
-f?scripfile??從腳本文件中讀取awk命令?
-m[fr]?val???對val值設置內在限制,-mf選項限制分配給val的最大塊數目;-mr選項限制記錄的最大數目。這兩個功能是Bell實驗室版awk的擴展功能,在標準awk中不適用。
  • 模式

    模式可以是以下任意一個:

-?/正則表達式/:使用通配符的擴展集。?-?關系表達式:使用運算符進行操作,可以是字符串或數字的比較測試。-?模式匹配表達式:用運算符~(匹配)和~!(不匹配)。?-?BEGIN語句塊、pattern語句塊、END語句塊:參見awk的工作原理
  • 操作

    操作由一個或多個命令、函數、表達式組成,之間由換行符或分號隔開,并位于大括號內,主要部分是:

-?變量或數組賦值?-?輸出命令?-?內置函數?-?控制流語句
  • awk內置變量
$n?當前記錄的第n個字段,比如n為1表示第一個字段,n為2表示第二個字段。?$0?這個變量包含執行過程中當前行的文本內容。?[N]?ARGC?命令行參數的數目。?[G]?ARGIND?命令行中當前文件的位置(從0開始算)。?[N]?ARGV?包含命令行參數的數組。?[G]?CONVFMT?數字轉換格式(默認值為%.6g)。?[P]?ENVIRON?環境變量關聯數組。?[N]?ERRNO?最后一個系統錯誤的描述。?[G]?FIELDWIDTHS?字段寬度列表(用空格鍵分隔)。?[A]?FILENAME?當前輸入文件的名。?[P]?FNR?同NR,但相對于當前文件。?[A]?FS?字段分隔符(默認是任何空格)。?[G]?IGNORECASE?如果為真,則進行忽略大小寫的匹配。?[A]?NF?表示字段數,在執行過程中對應于當前的字段數。?[A]?NR?表示記錄數,在執行過程中對應于當前的行號。?[A]?OFMT?數字的輸出格式(默認值是%.6g)。?[A]?OFS?輸出字段分隔符(默認值是一個空格)。?[A]?ORS?輸出記錄分隔符(默認值是一個換行符)。?[A]?RS?記錄分隔符(默認是一個換行符)。?[N]?RSTART?由match函數所匹配的字符串的第一個位置。?[N]?RLENGTH?由match函數所匹配的字符串的長度。?[N]?SUBSEP?數組下標分隔符(默認值是34)。

以上三種文本處理工具都支持使用正則表達式


  • 元字符集

字符匹配

^?匹配行開始,如:/^sed/匹配所有以sed開頭的行。?
$?匹配行結束,如:/sed$/匹配所有以sed結尾的行。?
.?匹配一個非換行符的任意字符,如:/s.d/匹配s后接一個任意字符,最后是d。?
*?匹配0個或多個字符,如:/*sed/匹配所有模板是一個或多個空格后緊跟sed的行。
.*?匹配任意長度的任意字符?
[]?匹配一個指定范圍內的字符,如/[ss]ed/匹配sed和Sed。?
[^]?匹配一個不在指定范圍內的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一個字母開頭,緊跟ed的行。
[:alnum:]?字母和數字?
[:alpha:]?代表任何英文大小寫字符,亦即A-Z,?a-z?
[:lower:]?小寫字母??[:upper:]?大寫字母?
[:blank:]?空白字符(空格和制表符)?
[:space:]?水平和垂直的空白字符(比[:blank:]包含的范圍廣)?
[:cntrl:]?不可打印的控制字符(退格、刪除、警鈴...)?
[:digit:]?十進制數字[:xdigit:]十六進制數字?
[:graph:]?可打印的非空白字符?
[:print:]?可打印字符?
[:punct:]?標點符號

次數匹配

\??匹配其前面的字符0或1次?
\+?匹配其前面的字符至少1次?
\{n\}?匹配前面的字符n次?
\{m,n\}?匹配前面的字符至少m次,至多n次?
\{,n\}?匹配前面的字符至多n次?
\{n,\}?匹配前面的字符至少n次

原創文章,作者:KX_il,如若轉載,請注明出處:http://www.www58058.com/86306

(1)
KX_ilKX_il
上一篇 2017-09-08 17:36
下一篇 2017-09-09 08:53

相關推薦

  • DNS基礎及使用BIND搭建域名服務器

        本文主線是DNS服務相關概念和服務器搭建,在此之前了解一下域名這個東東很有其必要性,因為DNS服務就是應域名而生的。那么域名是什么哪?     域名     域名是用一串用點分開的字符串來表示的internet上的某一臺或者一組計算機的名稱,用于在數據傳輸時標識計算機的電子方位。舉…

    Linux干貨 2015-06-11
  • Linux基礎之LVM

    一.LVM介紹 LVM(Logic Volume Management)邏輯卷管理器,其基本原理就是將多個磁盤的分區在邏輯上進行組合,使之成為一個大容量的磁盤進行使用,可以實現動態的分配存儲空間。 LVM基本模型以及基本術語,如下圖所示: PV:物理卷,從邏輯上與磁盤分區具有同樣功能的設備 VG:卷組,由一個或多個物理卷組成 LV:邏輯卷,具有邏輯邊界的存儲…

    Linux干貨 2016-11-09
  • 優云實踐:巧用Salt,實現CMDB配置自動發現

    隨著互聯網+新形勢的發展,越來越多的企業步入雙態(穩敏雙態)IT時代,信息化環境越來越復雜,既有IOE三層架構,也有VCE、Openstack等云虛擬化架構和互聯網化的分布式大數據架構。所以,企業急需建立一套合適的配置管理庫(CMDB),像人類“大腦”一樣統一存儲從基礎架構到業務應用各層面的配置信息,以便協調“身體”(運維系統)各部分完成復雜的運維工作。 C…

    系統運維 2016-07-26
  • 第三周作業

    第三周作業

    Linux干貨 2017-12-19
  • 權限管理

    linux文件權限:     在linux系統中,每個文件或目錄都包含有相應的權限,這些權限決定了哪些用戶或組能夠對此文件做哪些操作,如讀取、刪除、寫入等操作 文件權限分為三類:r,w,x     應用于文件:      &nbs…

    Linux干貨 2016-08-07
  • 編譯內核

    了解內核;內核設計體系:單內核,微內核     linux:單內核設計,但充分借鑒了微內核體系的設計優點;為內核引入了模塊化機制; 內核的組成部分一般有三種;     kernel:內核核心,一般為bzimage (bzip2格式所壓縮的內核映像文件),這個文件通常位于/boot…

    Linux干貨 2016-09-21

評論列表(1條)

  • h
    h 2017-09-09 09:05

    非常細致的作業!

欧美性久久久久