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

相關推薦

  • 運維工程師技能需求排行

    這是我今天在拉勾網搜索運維,翻完了4四頁也招聘信息之后得到的,我的目的是想要看看之后的學習,哪個更應該成為重點,有些在我意料之中,有些還真的沒想到,算是努力了一個小時的收獲吧,分享給大家。
    注意:其中的看法僅代表個人觀點,很多都是依靠我自己的學習經驗和工作經驗累積的

    Linux干貨 2017-12-12
  • bind的安裝實現

    首先介紹一下我的測試環境:centos 7+入網(為了試行一下自己的安裝文檔,才裝的虛擬機) 1> yum install bind bind-chroot -y     因為剛剛安裝的虛擬機,這里我就不檢查了; 2>vim named.conf [root@localhost named]# cat /e…

    Linux干貨 2016-03-20
  • 20160802作業

    20160802作業 1、每日課堂筆記總結 2、預習 3、每日課堂pdf練習 4、在/data/testdir里創建的新文件自動屬于g1組,組g2的成員如: alice能對這些新文件有讀寫權限,組g3的成員如:tom只能對新文件有讀權限,其它用戶(不屬于g1,g2,g3)不能訪問這個文件夾。 [root@Centos7 ~]# chmod…

    Linux干貨 2016-08-04
  • Sed文本文件工具的使用詳解

    Sed文本文件工具的使用詳解 一、概述 sed 工具實際上就是一個非交互式的編輯器,主要是為了處理文本而生的,我們知道處理文本的三劍客是 grep sed awk 我們之前學習過 grep 文本過濾工具,它的主要作用是為了過濾文本,而sed 工具也是過濾文本,只不過sed工具針對的是文件中的每一行,而且sed工具更加強大,下面還具體說明一下sed 工具的原理…

    Linux干貨 2016-10-09
  • linux 計劃任務

    Linux之 計劃任務 介紹 相信每個人都有使用鬧鐘的習慣,我們設定鬧鐘的種類有很多。比如說,只提醒一次、工作日提醒、休息日提醒等。在設定鬧鐘之后,每天的設定時間都會按時的提醒你去做什么事情,以免自己忘記一些重要的會議等事情。像這樣在每天特定的時間安排做一些事情。這樣一種事情我們就稱之為例行任務計劃。 其實在個系統平臺上都有類似的例行性任務計劃功能,那如何去…

    Linux干貨 2017-09-04
  • shell腳本變成之數組、字符串處理及其它功能補充

    數組定義:                  能夠存儲多個元素的內存空間,每個元素在數組中具有特定的索引編號,我們可以通過變量名和索引編號來查看數組中的某一元素。    &nbsp…

    Linux干貨 2016-08-24

評論列表(1條)

  • h
    h 2017-09-09 09:05

    非常細致的作業!

欧美性久久久久