正規表示式與文字格式化處理

2021-06-23 08:43:12 字數 3229 閱讀 4215

正規表示式與萬用字元是完全不一樣的東西。萬用字元是bash介面的乙個功能,正在表示式是一種字串處理的表示方式。一些特殊字元的意義:

grep  [-acinvab] [--color=auto] '查詢字串'  filename

-a:  將binary檔案以text檔案的方式查詢資料

-c:計算找到『查詢字串』的次數

-i : 忽略大小寫的不同,所以大小寫視為相同

-n:顯示行號

-v:  反向選擇

-a:後面可加數字,是after的意思,除了列出該行外,後續的n行也列出來

-b :後面可加數字,是before的意思,除了列出該行外,前面的n行也列出來

--color=auto:將找到的關鍵字加上顏色

正規表示式中,^:行首,$:行尾,^$:表示空白行,^在中表示反向選擇      

查詢空白行:

grep -n '^$' regular_express.txt

去除shell文字的注釋(#開頭)去除空白行

grep -v '^$' man.config | grep -v '^#'

點.  :表示一定有乙個任意字元    *(星號):表示重複前乙個0到無窮多次的意思,  .* 可表示0個或多個任意字元,而在萬用字元中*表示0個到無限多個字元,萬用字元與正規表示式不同!正規表示式表:

擴充套件的正規表示式,grep預設支援基礎正規表示式,如果使用擴充套件的,則使用grep -e或直接使用egrep

之前的使用grep -v '^$' man.config | grep -v '^#',需要查詢兩次,如果使用擴充套件正規表示式則是 egrep -v '^$|^#' man.config,  在單引號內|表示or或的意思,通過一次查詢將空白行和以#開頭的行都去除,擴充套件正規表示式:

*:0個或多個前乙個字元,+:1個或多個前個字元, ?:0個或1個字元,\:n到m個前字元  , \:轉義字元

^: 開頭,$:結尾 , [|:列表  [^]:不包含列表內字元    or查詢字串, ():找出組

!並不是特殊字元

sed命令:

sed [-nefr] 動作

-n:使用安靜模式,在一般的sed用法中,所有都會輸出在螢幕上,如果加上-n,則只有經過sed特殊處理的行才會列出來

-e:直接在命令列模式上進行sed,預設,可省略

-f: 直接將動作寫在乙個檔案內,-f filename可以直接執行filename的sed動作

-r:支援擴充套件正規表示式

-i:直接修改讀取的內容,而不是由螢幕輸出

動作:[n1[,n2]] function, n1,n2代表執行動作的行數,可選

a:新增,a的後面可以接字串,字串會在目前下一行(新的一行)出現

c:替換,c的後面可以接字串,字串替換在n1, n2之間的行

d:刪除,後面通常不接任何引數

i:插入,i後接字串,字串會在目前的上一行(新行)出現

p:列印,通常與-n一起使用,只輸出列印的行

s:替換,可以搭配正規表示式,與vim替換命令類似,1,20s/old/new/g

刪除批註之後的資料,以下刪除的資料成了空白行

cat man.config | grep 'man' | sed 's/#.*$//g'

再刪除空白行

cat man.config | grep 'man' | sed 's/#.*$//g' | sed '/^$/d'

修改原檔案,將regular_express.txt內每一行結尾為『.』換成『!』

sed -i 's/\.$/!/g' regular_express.txt

在檔案最後一行新增『this is a test』

sed -i '$a this is a test' regular_express.txt

printf格式命令:

printf不是管道命令,所以不能使用|,應該使用$(cmd),如下操作

awk:資料處理工具,sed常常用於一整行的處理,awk傾向於將一行分成數個「字段」來處理,預設的分割符為空格鍵或tab鍵

awk '條件型別1  條件型別2...' filename

$0: 代表一整行資料,$1:第乙個字段,$2:第二個欄位....,   awk以行為一次處理單位,而以字段為最小處理單位,awk的內建變數

nf每一行($0)擁有的字段總數

nr目前awk處理的是第幾行資料

fs目前的分割符,預設空格符

如列出第一列,列出目前處理的行數,並說明改行有多少字段:

awk也可以有邏輯運算子:

第一條命令,第一行輸出不正確,因為讀入第1行時,變數預設是以空格鍵分割的(鳥哥是這麼說的,為啥呢),fs=:的條件僅能在第2行以後生效,但awk可以預設遍歷,利用begin關鍵字就可以了,還有end關鍵字。

awk的處理流程:

1 讀入第一行,並將第一行的資料填入$0, $1, $2等變數中

2 依據條件型別的限制,判斷是否需要進行後面的動作

3 做完所有的動作與條件型別

4 若還有行,則重複1,2,3,直到所有資料讀取完。

比較檔案的工具:

diff,  cmp,diff以行為單位進行比較,主要用在新舊版本上的比較, diff也可以比較兩個目錄的不同,cmp以位元組為單位進行比較,

如下比較:

Linux 學習「正規表示式與檔案格式化處理」

正規表示式就是處理字串的方法 dmesg列出核心資訊 grep a表示此行後面的幾行顯示出來 b表示之前 表示行首,表示行尾,小數點有特殊意義所以要轉義,其他的一律使用 是用來轉義的 在內表示取反,grep用 v取反 正規表示式下.代表一定有乙個任意字元的意思,代表0到無窮多次的意思 不是字元 就是...

Day4 正規表示式與檔案格式化處理

讀書筆記 重 一 基礎正規表示式 1.使用正規表示式時,需要留意環境語系。2.特殊符號 alnum 0 9,a z,a z,alpha a z a z blank 空格鍵,tab鍵 cntrl 控制按鍵 cr lf tab del等 digit 0 9 graph 除了空格符 空格鍵,tab鍵 以外...

Linux正規表示式與檔案格式化處理學習總結

1 正規表示式就是處理字串的方法,它是以行為單位來進行字串的處理行為 2 正規表示式通過一些特殊符號的輔助,可以讓使用者輕易達到查詢 刪除 替換某特定字串的處理程式 3 只要工具程式支援正規表示式,那麼該工具程式就可以用來作為正規表示式的字串處理之用 4 正規表示式與萬用字元是完全不一樣的,萬用字元...