每天30分鐘吊打Linux常用命令專題 正規表示式

2021-10-05 09:49:33 字數 3411 閱讀 7397

bre模式

純文字匹配

從日誌檔案中查詢spring boot啟動埠,假設日誌檔案為nohup.log,可以使用一下命令進行匹配。

sed -n '/port(s)/p' nohup.out
cat nohup.out | grep "port(s)"

# 此時輸出的結果會標紅,建議使用此方式

特殊字元

linux正規表示式中主要的核心特殊字元為:.*^${}\+?|(),當需要匹配的字串中包括這些字元需要對字元進行轉義。

echo

"hello\fhdkajf"

| grep '\\'

echo

"hello\fhdkajf"

| sed -n '/\\/p'

# 此處sed可以修改為awk命令

錨字元

正規表示式的錨點主要包括^$兩個字元,$可以匹配字元出現在行尾,^匹配字元出現在行首。

echo

"hello\fhdkajf"

| grep "^hello"

# 可以匹配出

echo

"hello\fhdkajf"

| grep "^hello$"

# 匹配行資料為hello的行,返回空

點號字元

.點號字元標識乙個除換行符以外的任意乙個字元。.點號位置必須包含乙個字元,如果不佔乙個字元則直接返回空,匹配不上

echo

"hello\fhdkajf"

| grep "^h.llo"

## 列印 hello\fhdkajf

echo

"heello\fhdkajf"

| grep "^h.llo"

# 輸出為空

echo

"hllo\fhdkajf"

| grep "^h.llo"

# 輸出為空

字元組

字元組是限定每一位置的字元是在字元組內的字元,使用中括號表示其中的值,舉例如下:

echo

"hallo\fhdkajf"

| grep "^h[ae]llo"

# 此時只能匹配乙個字元

字元組排除(^)

echo

"hallo\fhdkajf"

| grep "^h[^ae]llo"

# 排除第二個字元為a和e

echo

"hqllo\fhdkajf"

| grep "^h[^ae]llo"

# 輸出 hqllo\fhdkajf

區間([?-?]) 閉區間

echo

"hqllo\fhdkajf"

| grep "^[h-q]qllo"

# hqllo\fhdkajf

echo

"qllo\fhdkajf"

| grep "^[h-q]llo"

# qllo\fhdkajf

特殊字元組

regex正規表示式中包括一些特殊的字元組簡寫,可以描述部分字元組,如下列舉了所有的特殊的字元組:

字元組描述[[:alpha:]]

匹配任意字母字元,包括a-z和a-z

[[:alnum:]]

匹配任意字母字元和數字,包括a-z和a-z和0-9

[[:blank:]]

匹配空格和製表符

[[:space:]]

匹配任意空白字元:空格、製表符、nl、ff、vt和cr

[[:upper:]]

匹配任意大寫字母,a-z

[[:lower:]]

匹配任意小寫字母,a-z

[[:digit:]]

匹配任意數字,0-9

[[:print:]]

匹配任意可列印字元

[[:punct:]]

匹配標點符號

星號字元後面放置星號表明該字元必須在匹配模式的文字**現0次或多次

echo

"qllo\fhdkajf"

| grep "^ql*"

# qllo\fhdkajf # l出現了0次或多次

擴充套件正規表示式

問號?

字元可以出現0次或1次。

echo

"bet"

| awk -n '/be?t/p'

加號+

字元出現至少1次。

echo

"bet"

| awk -n '/be+t/p'

花括號(設定上下限)

預設情況下,gawk程式不會識別正規表示式間隔。必須指定gawk程式的–re- interval命令列選項才能識別正規表示式間隔。

echo

"beet"

| gawk --re-interval '/bet/'

# beet

echo

"bet"

| awk --re-interval -n '/bet/'

# 空echo

"bet"

| awk --re-interval -n '/bet/'

# bet

echo

"bet"

| awk --re-interval -n '/bet/'

# 空

管道符號(|或的關係)

echo

"the cat is asleep"

| gawk '/cat|dog/'

表示式分組()

echo

"he has a hat."

| gawk '/[ch]at|dog/'

字元

意義條件型別

*匹配行中的字元出現0次或多次

字元出現0次或n次

.匹配除換行符意外的任意乙個字元,有且僅有乙個

充分必要條件

?匹配字串出現0次或一次

必要條件

+匹配字元至少出現一次

充分必要條件

注意事項:

每天30分鐘吊打Linux常用命令專題 SED命令

sed編譯器被稱為流編輯器。可以在處理資料之前基於事先提供的一組規則遍歷資料流。可以包括文字檔案中的搜尋關鍵字全域性替換 區域性替換 特定行,和標記 刪除行 新增或追加行 處理單個字元的轉換 命令 y 執行效率極高。sed命令格式 sed options program fileoptions常用的...

《每天堅持30分鐘》摘錄

第一章只有學習才能成功 1 有 學習意識 時,學習慾望最大。這時集中學習的話,往往收效很大。2 每天學習30分鐘持續5年,比每天學習5個小時堅持一周的效果要高出10倍。3 三天打魚兩天曬網也可以,每年能反覆50次的話,一年的學習時間會有150天。4 初次學習的知識要在1週後進行複習,過2週後進行第2...

每天30分鐘,實現自我增值

如果你問我,人們常常做事半途而廢是不是因為缺乏耐心。我認為,那是因為人們都太急功近利,習慣於眼前短暫的滿足。事實上,做任何事情都要付出時間。理查德 布蘭森不是一夜成為百萬富翁的 麥當娜也不是一夜成名的 碧鹹姆更不是一出生就是足球巨星。其實,想要自我增值很簡單。為什麼?因為大多數人只是在想而不行動。大...