1. 程式人生 > >正則三劍客grep、sed、awk

正則三劍客grep、sed、awk

正則

  • 正則就是一串有規律的字串,掌握好正則對於編寫shell指令碼有很大幫助,各種程式語言中都有正則,原理是一樣的
  • 正則三劍客
    • grep
    • sed
    • awk

 grep

grep用法:grep [引數] '關鍵字' 檔名    #關鍵詞也可以是正則表示式
grep [-cinvABC] 'word' filename 
-c 統計包含'關鍵字'的行數。既使一行有多個關鍵字,也會按一行計算。
-i 篩選'關鍵字'時不區分大小寫。
-n 篩選'關鍵字'時顯示關鍵字所在的行號。
-v 反向選擇,也就是'關鍵字'以外的內容。
-r 查詢關鍵詞時遍歷路徑下的子目錄。
-An 這裡的n是一個數字。作用是過濾出符合要求的行以及下面的“n”行。
-Bn 同上,區別為符合要求的行以及上面的“n”行。
-Cn 同上,區別為符合要求的行以及上下的各“n”行。
 grep -n 'root' /etc/passwd   #顯示出現root的行數
 grep -nv 'nologin' /etc/passwd    #不顯示出現root的行數
 grep '[0-9]'/etc/inittab       #顯示 /etc/inittab檔案下出現0-9關鍵詞的行數
 grep -v '[0-9]'/etc/inittab    #顯示 /etc/inittab檔案下出現0-9關鍵詞之外的行數
 grep -v '^#' /etc/inittab      #^符號表示開頭,#符號表示結尾。此處為顯示/etc/inittab內容中不帶空行的內容
 grep -v '^#' /etc/inittab|grep -v  '^$'    
 grep '^[^a-zA-Z]' test.txt
 grep 'r.o' test.txt
 grep 'oo*' test.txt
 grep '.*' test.txt
 grep 'o\{2\}' /etc/passwd
 egrep 'o{2}' /etc/passwd
 egrep 'o+' /etc/passwd
 egrep 'oo?' /etc/passwd
 egrep 'root|nologin' /etc/passwd
 egrep '(oo){2}' /etc/passwd

引數-E以及egrep

egrep == grep -E

egrep可以在'關鍵字'中使用擴充套件正則表示式中的字元。 擴充套件正則表示式字元:
# 井號
| 豎線
() 小括號
+ 加號
? 問號
{} 花括號

正則表示式

[] 方括號表示一個範圍,可以是括號內的任意一個字元。
[a-z] 所有的小寫字母
[A-Z] 所有的大寫字母
[a-zA-z] 所有的字母
[0-9] 所有的數字。
^ 即為shift+6。表示以什麼什麼開頭。例如'^#'即為以#號開頭。
$ 即為shift+4。表示以什麼什麼結尾。例如'g$'即為以g結尾。
^$ 用來表示一個空行。就是開頭至結尾中間啥也沒有。
. 表示任意一個字元。
* 表示匹配星號左邊的字元0次或多次。
+ 表示匹配加號左邊的字元一次或多次。
? 表示匹配問號左邊的字元零次或兩次。
{n} 其中n為數字或是範圍。當內容是範圍時用逗號分隔。表示匹配花括號左邊的一個字元n次。
() 小括號中的內容被視為一個整體。
.* 表示任意個字元

sed

格式:sed 命令引數 '動作範圍'引數 檔案或路徑

sed 命令引數

-n 只顯示匹配的行。
-e 執行多個匹配條件。
-r 使用擴充套件正則表示式字元。等同於grep -E和egrep的關係。
-i 執行結果直接寫入檔案。

sed動作範圍引數

p 顯示所有內容。由於p會顯示所有內容,所以一般有p的場和都加-n。
d 顯示動作範圍以外的內容。
I 大寫的I表示內容不區分大小寫。

sed的查詢替換功能

sed 命令中單引號中間的內容可以使用類似vi命令中的查詢替換。
普通查詢替換: 's/源內容/替換內容/g'

查詢替換的內容裡包含“/”分界符的處理方案

1,在“/”的前面加“\”脫義符。使它成為字元而不是命令。
2,使用“#”或“@”代替“/”的分界符功能。注間,這裡是代替分界符而不是查詢替換內容中的“/”。

查詢替換的其他使用方法

1,刪除指定內容。
可以在源內容裡使用[]來指定範圍。比如[1-9]為數字,[a-z]是小寫字母。
在[]內使用“^”也就是shift+6符號。是反向選擇的意思。比如[^1-9]就是數字以外全部的意思。
2,替換內容中的&符號。可以代表源內容的每一行。
例:sed 's/.*/1234&/' test
就是在每一行的開頭加1234。反之就是在未尾加。

對檔案內容順序調換的方法:

1,分段:
第一段 ([^:]+)#^:表示冒號之外的字元
表示開頭至一個或多個非冒號的字元。
第二段 (:.:)
表示冒號開頭,和冒號結尾的內容。
第三段 ([^:]+)
表示非冒號的一個或多個字元然後結尾。


2,調換位置
使用\反斜槓加數字表示分段,然後重新排序。
sed -r 's/([^:]+)(:.
:)([^:]+)/\3\2\1/' test

相關推薦

三劍客grepsedawk

正則 正則就是一串有規律的字串,掌握好正則對於編寫shell指令碼有很大幫助,各種程式語言中都有正則,原理是一樣的

Linux文本處理三劍客(grepsedawk)

文本處理三劍客grepsedawkLinux文本處理三劍客(grep,sed,awk)

入坑-2--結合awksedgrepfindcut等使用

正則表達式 awk sed grep對文檔中目錄名進行替換#sed -e ‘s/\/home\/sxzhou/\/home\/SXZHOU/‘ < sed.txt 查找文件格式是txt和jpg格式的文件#find . ( -name ".txt" -o -name ".jp

筆記7 grepsedawk工具)

sed grep awk 正則含義:就是一串有規律的字符串掌握好正則對於編寫shell腳本有很大幫助各種編程語言中都有正則,原理是一樣的本章將要學習grep/egrep、sed、awkgrep用來過濾指定關鍵詞的創建一個實驗環境,創建mkdir grep;進入cd grep;拷貝cp /etc/p

2018-06-04筆記(grepsedawk工具)

linux9.1 正則介紹 正則表達式,又稱規則表達式,計算機科學的一個概念,正則表達式是對字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個“規則字符串”,這個“規則字符串”用來表達對字符串的一種過濾邏輯,在很多文本編輯器或其他工具裏,正則表達式通常被用來檢索和/或替換

表示式及grepsedawkcutsortuniq工具

1.正則表示式 (1)定義:規定一些特殊語法用來對字串進行模糊匹配; (2)特點: ①靈活性、邏輯性和功能性較強; ②可以迅速地用簡單的方式匹配字串; (3)使用事項:當正則表示式作為命令引數時,要用單引號括起來,

shell指令碼之表示式函式grepsedawkprintf等基本命令配置詳解

一、正則表示式 簡介: 正則表示式(或稱Regular Expression,簡稱RE)就是由普通字元(例如字元 a 到 z)以及特殊字元(稱為元字元)組成的文字模式。該模式描述在查詢文字主體時待匹配的一個或多個字串。正則表示式作為一個模板,將某個字元模式與所搜尋的字串進

表示式grepsedawk

開發十年,就只剩下這套架構體系了! >>>   

shell腳本-grepsedawk

語句 command 選項 交換 space 比較 修飾符 com 正則匹配 --正則-- 基礎正則 ^word ##搜索以word開頭的 vi/vim中 ^ 一行的開頭 word$ ##搜索以word結尾的 vi/vim中 $ 一行的結尾 ^$

grepsedawk三劍客

grep、sed、awk三劍客 一、grep grep命令主要用於文本內容的查找。它支持正則表達式查找,命令格式為: grep [option] pattern filename 例如:在filename文本中查找包含”text”的行: grep "text&quo

Linux文字處理三劍客awksedgrep入門

AWK命令簡介 AWK是一門解釋型的程式語言,它的名字來源於它的三位作者的姓氏:Alfred Aho,Peter Weinberger和Brian Kernighan。AWK能夠應用於廣泛的計算和資料處理任務。所有的GNU/Linux發行版都自帶GAWK,即GNU AWK,

運維之路-文字處理-三劍客grepsedawk

轉載:https://blog.csdn.net/zisefeizhu/article/details/82526749 目錄  grep 支援的正則 描述 輸出控制 描述 內容行控制 描述 示例: sed Usage: 命令 描述 地址 描述 匹配刪除(d)  替

三劍客基礎詳解(grepsedawk)

字符操作 解釋 一行 nan 怎麽 you 初見 至少 才會 三劍客基礎詳解 三劍客之grep詳解 通配符與正則表達式這兩口子可以說貫穿三劍客始終,甚至時貫穿linux始終,這樣說,我覺得並不誇張。因此在寫三劍客之前,先捋一捋這些這些知識點就很有必要了。 相對而言正則用於

linux三劍客命令-grepsedawk--sed

簡介 sed 是一種線上編輯器,它一次處理一行內容。處理時,把當前處理的行儲存在臨時緩衝區中,稱為“模式空間”(pattern space),接著用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往螢幕。接著處理下一行,這樣不斷重複,直到檔案末尾。檔案內容並沒

grepsedawk基礎

sed grep awk grepgrep :根據模式,搜索文本,並將符合模式的文本行顯示出來,使用基本正則表達式定義的模式來過濾文本的命令:-i :忽略大小寫 --color :加上顏色, -v :顯示沒有被模式匹配到的行-n:顯示匹配到的行在文件中的行數-w:精確匹配,只匹配整個單詞,而不是字

grepsedawk命令的簡單使用

grep、sed和awk命令的簡單使用 grep 命令選項意義-c匹配行的數量-i忽略大小寫-h查詢多文件時不顯示文件名-l只列出匹配的文件名,不列匹配行-n列出匹配行,並列出行號-s不顯示不存在或無匹配的錯誤信息-v顯示不包含匹配文本的所有行-w匹配整詞-r遞歸

Day08_固化命令grepsedawk命令

記錄 輸出 print option cnblogs 失敗 ron logs -o 一. 固化命令 shell登陸 /etc/profile /etc/bashrc /root/.bashrc /root/.bash_profile /etc/profile.d

二十六介紹grepgrepgrep

grep egrep 二十六、正則介紹grep上、grep中、grep下正則介紹grep正則:一串有規律的字符串。它使用單個字符串來描述或匹配一系列符合某個句法規則的字符串。很多文本編輯器或其他工具裏,正則表達式通常用來檢索和替換那些符合某個模式的文本內容。許多程序設計語言也都支持利用正則表達式進行字

grepsedawk的使用筆記

fsd 復數 重復 多個 技術分享 正在 是否 擴展 第一章 學習grep、sed、awk之前,肯定是要先了解正則表達式。學習之前,我們要先建立兩個文件來練習。vim a.txtcp /etc/passwd passwd第一章 grep和正則表達式一、 正則表達式1、單個字

GNU/Linux 表達式與三劍俠(grepsedawk)(精)

重復 深入理解 不同的 原則 寬度 搜索命令 自定義 -o 排序 相關好文章推薦: shell命令行的解析原理(單雙無引號與字符及通配符的關系):http://www.cnblogs.com/f-ck-need-u/p/7426371.html 正則表達式裏是如何表達字符集