1. 程式人生 > >Linux文字過濾命令grep|awk|sed小結

Linux文字過濾命令grep|awk|sed小結

grep的使用:
一、grep一般格式:

       grep [選項] 基本正則表示式 [檔案]
       這裡的正則表示式可以為字串。在grep命令中輸入字串引數時,最好將其用雙引號括起來。呼叫變數時也可以使用雙引號。在呼叫模式匹配事,應使用單引號。

二、grep常用選項:
       -c   只輸出匹配行的計數。
       -i   不區分大小寫(只用於單字元)。
       -h   查詢多檔案時不顯示檔名。
       -l   查詢多檔案時只輸出包含匹配字元的檔名。
       -n   顯示匹配行及行號。
       -s   不顯示不存在或無匹配文字的錯誤資訊。
       -v   顯示不包含匹配文字的所有行。


三、常用選項的使用:
1、 查詢多個檔案:
   $grep  “hello” *.doc
   num.doc:hello
   sum.doc:hello world
  說明在num.doc 和sum.doc中有字串“hello“。

2、 行匹配:   
   $grep -c “123” *.doc
   num.doc:2
   sum.doc:2
   說明在num.doc 和sum.doc中有字串“123“各為兩行。

3、 顯示滿足匹配模式的所有行數:
   $grep –n “123” *.doc
   num.doc:1:hao 123
   num.doc:2:hao 123
   sum.doc:2:hao 123

   sum.doc:4:hao 1234

4、 顯示所有不包含“123“的行:
   $grep  -v “123” *.doc
   num.doc:hello
   num.doc:world
   sum.doc:hello world
   sum.doc:sui yue

5、 精確匹配:
   如第三點,匹配“123”時,結果返回了“1234”的其它字串。
   $grep -n “123\>” *.doc
   num.doc:1:hao 123
   num.doc:2:hao 123
   sum.doc:2:hao 123

6、 大小寫敏感:
   預設情況下,grep是大小寫敏感的,如果要查詢大小寫不敏感的字串,必須

   使用-i選項。
   $grep -i “just” *.doc 
   num.doc:Just
   num.doc:just

四、grep和正則表示式
1、模式範圍:
   $ grep  ‘48[34]’ mydata.doc
   此命令在mydata.doc中匹配字串“483”和“484”。
2、 不匹配行首:
   $ grep  ‘^[^48]’ mydata.doc
   此命令在mydata.doc中匹配除4或者8開頭的行。
3、 設定大小寫:
   $ grep  ‘[Ss]ept’  mydata.doc
   此命令在mydata.doc中匹配字串“Sept”和“sept”。
4、匹配任意字元:
   $ grep  ‘a…z’ mydata.doc
   此命令在mydata.doc中匹配字串以字元a開頭和字元z結尾,中間為任意三個字元。
5、 模式出現的機率
   $ grep ‘1\{2,\}’ mydata.doc
   此命令說明數字1至少出現兩次




--------------------------------------------------------------------------------

awk的使用:
一、awk的呼叫格式:
awk的呼叫格式有三種:
第一種是命令列的方式,如下:
awk [-F field-separator] ‘commands’ input-file
[-F]域分隔符,是可選的,awk使用空格作為預設的域分隔符。

第二種方法是將awk命令插入到一個檔案,並使awk程式可以執行,然後用awk命令直譯器作為指令碼的首行,以便通過鍵入指令碼名稱來呼叫它。
第三種方法是將所有的awk命令插入一個單獨檔案,然後呼叫:
awk –f awk-script-file input-file

二、動作和模式
       任何awk語句都有模式和動作組成。模式部分決定動作語句何時觸發及觸發事件。
模式包括兩個特殊欄位BEGIN和END.,BEGIN語句使用在任何文字瀏覽動作之前,之後文字瀏覽動作依據輸入檔案開始執行,END語句用來在awk完成文字瀏覽動作後列印輸出文字中輸出和結尾狀態標誌。實際動作在大括號內指明。

三、域和記錄
       awk執行時,其瀏覽域標記為$1,$2 ….$n.。這種方法稱為域標識。
    1、儲存awk輸出
第一種方法:
$awk ‘{print $0}’ mydata.txt >newfile.txt
顯示屏上不會輸出結果。

第二種方法:
$awk ‘{print $0}’ mydata.txt | tee newfile.txt
輸出到檔案中,同時顯示在顯示器上。

2、使用標準輸入
第一種方法:使用awk指令碼輸入檔案格式
$myawk.awk inputfile.txt
第二種方法:使用重定向
$myawk.awk < inputfile.txt
第三種方法:使用管道
$inputfile.txt | myawk.awk

3、列印所有記錄
$awk ‘{print $0}’ myfile.txt
由於沒有模式部分,只有動作部分,動作必須用花括號括起來。

Lisi 25 wuhan
Wangjian 33 shanghai
Caiming 55 shenzhen
4、列印單獨記錄
要用逗號分隔域
$awk ‘{print $1,$2}’ myfile.txt
Lisi 25
Wangjian 33
Caiming 55

5、列印報告頭
$awk ‘BEGIN {print “Name Age\n******************“} {print $1”\t”$2}’ mfile.txt

Name    Age
***************
Lisi      25
Wangjian 33
Caiming 55

6、列印資訊尾
$awk ‘BEGIN {print “Name \n****** “} {print $1 } END {“end of report\n”}’ mfile.txt



--------------------------------------------------------------------------------


sed的使用:
一、sed呼叫格式
sed呼叫格式有三種:
第一種命令列方式:
sed [option] ‘command’ inputfile
command要加單引號,也允許加雙引號。
第二種使用sed指令碼檔案:
sed  [option]  –f  sed-script-file inputfile
第三種使用第一行具有sed命令直譯器的sed指令碼檔案:
sed-script-file [option] inputfile

二、sed選項:
n 不列印:sed不寫編輯行到標準輸出,預設為列印所有行。P命令可以用來列印編輯行。
c 下一命令是編輯命令。使用多項編輯時加入選項。
f 如果正在呼叫sed指令碼檔案,使用此選項。此選項通知sed指令碼檔案支援所有的sed命令。

三、sed常規用法:
1、 儲存sed 輸出
$ sed  ‘command’ inputfile > outfile

2、 sed在檔案中查詢文字的方式
sed瀏覽檔案時,預設從第一行開始,有兩種方法定位文字:
第一種:使用行號,可以用簡單數字或是一個行號範圍。
第二種:使用正則表示式。

Sed定位文字的一些方式,如下:
x x表示行號。 
x,y 表示行號範圍從x到y。 
/pattern/ 查詢包含模式的行。 
x,/pattern 通過行號和模式查詢匹配行。 
x,y! 查詢不包含指定行號x到y的行。 



3、 sed編輯命令
p 列印匹配行 
= 顯示檔案行號 
a\ 在定位行號後附加拳文字資訊 
i\ 在定位行號後插入拳文字資訊 
d 刪除定位行 
c\ 用拳文字替換定位文字 
s 使用替換模式替換相應模式 
r 從另一個檔案中讀文字 
w 寫文字到一個檔案 
q 第一個模式匹配完成後推出或立即推出 
l 顯示與八進位制ASCII程式碼造價的控制字元 
{} 在定位行執行的命令組 
n 從另一個檔案中讀文字下一行,並附加在下一行 
g 將模式2貼上到/pattern n/ 
y 傳送字元 
n 延續到下一輸入行;允許跨行的模式匹配語句。 


4、 使用p顯示行
$sed -n ‘2p’ myfile.txt
Hello world!
-n選項,顯示列印定位行。

5、 列印範圍
$sed -n ‘1,3p’ myfile.txt
Hao 123
Hello world!
Ni hao ma?
列印1到3行。

6、 列印模式
$sed -n ‘/123/’p myfile.txt
Hao 123
匹配

相關推薦

Linux文字過濾命令grep|awk|sed小結

grep的使用:一、grep一般格式:       grep [選項] 基本正則表示式 [檔案]       這裡的正則表示式可以為字串。在grep命令中輸入字串引數時,最好將其用雙引號括起來。呼叫變數時也可以使用雙引號。在呼叫模式匹配事,應使用單引號。二、grep常用選項

七:Linux 文字查詢命令

linux 第七節 文字查詢命令 find 作用:按照指定條件查詢檔案 格式:find 查詢路徑 查詢條件 操作 查詢條件 -name : 匹配名稱查詢 -user :匹配所有者(root 或 普通使用者) -type b/d/c/p/l/f :匹配檔案型別(塊

Linux文字處理命令--cut分割檔案和sed查詢替換的運用

        今天遇到一個數據檔案需要處理,文字約1萬行,檔案每行都是以$字元進行分隔的各種資料列,每行38列。我需要取其中的某一些列,基本都集中在前10列。最初的想法是使用UltraEdit工具進行處理,使用正則表示式查找出了每行中間所需要的內容,無奈UE只支援按行復制

程式設計小技巧之 Linux 文字處理命令(二)

合格的程式設計師都善於使用工具,正所謂君子性非異也,善假於物也。合理的利用 Linux 的命令列工具,可以提高我們的工作效率。 本篇文章是[《Linux 文字處理命令》](http://remcarpediem.net/article/45ef130c/) 續篇,在前文的基礎上再介紹幾款有用的 Linux

Linux基礎命令---文字過濾col

col 過濾掉影響閱讀的控制字元,使用重定向符把說明手冊的內容輸出到文字檔案時,控制字元就成亂碼。col指令可以過濾掉控制字元,使文字可讀。col從標磚輸入讀取內容,輸出到標準輸出。col在讀取字元時跟蹤字符集,並確保字符集在輸出時是正確的。如果輸入試圖備份到最後一條重新整理行,col將顯示一條警告訊息

Linux基礎命令---文字過濾coi

col        過濾掉影響閱讀的控制字元,使用重定向符把說明手冊的內容輸出到文字檔案時,控制字元就成亂碼。col指令可以過濾掉控制字元,使文字可讀。col從標磚輸入讀取內容,輸出到標準輸出。col在讀取字元時跟蹤字符集,並確保字符集在輸出時是正確的。如果輸入試圖

Linux基礎命令---文字過濾colrm

colrm 從標準輸入讀取資料,刪除指定的列,然後送到標準輸出。如果用一個引數呼叫,則將從指定的列開始刪除每一行的列。如果使用兩個引數呼叫,則將刪除從第一列到最後一列的列。列編號以第1列開始。 此命令的適用範圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedor

Linux文字分段裁剪命令cut(轉)

實例 分割 blog get 開頭 strong 一個 roc spa Linux cut命令用於顯示每行從開頭算起num1到num2的文字。 語法 cut [-bn] [file] cut [-c] [file] cut [-df] [file] 使用

linux 進程命令小結

系統 aux post blog img loading 情況 net log top:動態查看進程的變化 ps:將某個時間點的進程運行情況選取下來 ps -l :僅查看自己的bash相關進程 ps -aux :查看系統所有的進程 pstree :列出目前系統上面所有的進程

Linux 使用grep篩選多個條件及grep常用過濾命令

cat log.txt | grep 條件;  cat log.txt | grep 條件一 | grep 條件二;  cat log.txt | grep 條件一 | grep 條件二 | grep 條件三; grep 條件一 log.txt | grep 條件二 | gr

0x01 RHEL linux 文字編輯常用命令

基本掌握了切換工作目錄及對檔案的管理方法。Linux系統中“一切都是檔案”,而對服務程式進行配置自然也就是編輯程式的配置檔案。如果不能熟練地查閱系統或服務的配置檔案,那以後工作時可就真的要尷尬了。本節將講解幾條用於檢視文字檔案內容的命令。 1.cat命令 cat命令用於檢視純文字檔案(內容

Linux學習——管道命令文字提取命令、排序命令、雙向重導向、字元轉換命令、分割命令、引數代換

目錄   管道命令 文字提取命令:cut、grep cut grep 排序命令:sort、wc、uniq sort uniq wc 雙向重導向:tee 字元轉換命令 tr col join paste expand 分割命

每天一點linux命令文字反轉命令:rev和tac

今天介紹兩個命令:rev和tac,是用於檔案反轉的,命令使用頻率其實不太多,但是偶爾還是可以玩一玩。 rev命令 rev命令簡言之,就是能夠讓文字橫向反轉的命令,大概就是把"1234"轉換成"4321"這樣子。 這裡看一個test1文字: 使用rev命令: rev命令只有兩個引數

linux常用命令實戰小結

修改文件 結構 chown ppp UNC 大小 linux常用命令 修改用戶 查看 inux上的文件管理類命令:cd ls mkdir touch pwd tree chown chgrp chmod rm cd 命令切換工作目錄至dirnamels 列出當前目

Linux文字處理命令

Sort          將檔案的每一行作為一個單位,相互比較,比較原則是從首字元向後,依次按ASCII碼值進行比較,最後將他們按升序輸出。        &nb

Linux高階文字處理命令

cut 一、cut命令   功能:cut命令可以從一個文字檔案/文字流中提取文字列   語法:   cut -d '分割字元' -f fields  ##用於有特定分割字元   cut -c 字元區間  ##用於排列整齊的資訊   選項與引數: -d:後面接分隔字元。與 -f 一起使用;

linux】--- 高階命令文字處理工具 sort

二、sort命令  sort 命令對 File 引數指定的檔案中的行排序,並將結果寫到標準輸出。如果 File 引數指定多個檔案,那麼 sort 命令將這些檔案連線起來,並當作一個檔案進行排序。 選項與引數: -f  :忽略大小寫的差異,例如 A 與 a 視為編碼相同

linux】--- 高階命令文字處理工具 cut

第一: cut命令 cut : 可以從一個文字檔案或者文字流中提取文字列 echo $PATH 選項 -b:僅顯示行中指定直接範圍的內容; -c:僅顯示行中指定範圍的字元; -d:指定欄位的分隔符,預設的欄位分隔符為“TAB”; -f:顯示指定欄位的內容; --comple

Linux 系統之文字處理命令

---恢復內容開始---   Linux 系統之文字處理命令 (一)基於關鍵字搜尋 (二)基於列處理文字 (三)文字統計 (四)文字排序 (五)刪除重複行 (六)文字比較 (七)處理文字內容 (八)搜尋替換       (一)基於關鍵字搜尋

Linux小小白入門教程(七):vi文字編輯命令

以下操作在Linux終端進行。Linux因為許可權非常嚴格,所以暫時所有的命令操作全部是在/home資料夾下的/yangjw資料夾下進行。/yangjw資料夾就是登入使用者名稱所在的資料夾,出了此資料