Linux學習筆記11

2021-10-14 16:07:01 字數 3629 閱讀 4041

1、基本正規表示式字元,擴充套件正規表示式,預定義中括號表示式和元字元

一、基本正規表示式(bre)集合:

(1)^:尖角號,用法為「^oldboy」,表示匹配以oldboy單詞開頭的行

(2)$:美元符,用法為「oldboy$」,表示匹配以oldboy單詞結尾的行

(3)^ $:組合符,表示空行,邏輯解釋就是以「^」結尾的行,或者以「$」開頭的行

(4).:點號,表示匹配任意乙個且只有乙個字元(但是不能匹配空行)

(5)\:轉義字元,讓有特殊含義的字元脫掉馬甲,現出原形,如「\ .」只表示小數點

(6)*:匹配前乙個字元(連續出現)0次或1次以上,注意,當重複0次的時候,表示什麼也沒用(空),即匹配所有內容

(7).*:組合符,匹配所有內容

(8)^.*:組合符,匹配以任意 多個字元開頭的內容

(9).*$:組合符,匹配以任意多個字元結尾的內容

(10)[abc]:匹配以「」集合內的任意乙個字元a或b或c;[abc]也可以寫成[a-c]

(11)[^abc]:匹配不包含「^」後的任意字元a或b或c,這裡的「^」表示對[abc]的取反,此處的「^」不能用「!」替代

二、擴充套件正規表示式(ere)集合:

(1)+:匹配前乙個字元1次或多次

(2)[:/]+:匹配括號內的「:」或「/」字元1次或多次

(3)?:匹配前乙個字元0次或1次

(4)|:表示或者,即同時過濾多個字串

(5)():分組過濾,被括起來的內容表示乙個整體,另外「()」的內容可以被後面的「\n」引用,n為數字,表示引用第幾個括號的內容

(6)\n:引用前面「()」(小括號)裡的內容,例如,(aa)\1,匹配aaaa

(7)a:匹配前乙個字元最少n次,最多m次

(8)a:匹配前乙個字元最少n次

(9)a:匹配前乙個字元正好n次

(10)a:匹配前乙個字元最多m次

特別強調:支援擴充套件正則的3種方法

□grep命令加「-e」引數即可支援擴充套件正則

□grep命令不加引數也可以使用擴充套件正規表示式的特殊字元,但有個條件,就是需要在使用的每個特殊的字元前面加「\」(反斜線)

□egrep命令可直接支援擴充套件正則

三、預定義特殊中括號表示式:

[:alnum:]:匹配任意乙個字母或數字字元,相當於[a-za-z0-9]

[:alpha:]:匹配任意乙個大小寫字母字元,相當於[a-za-z]

[:blank:]:空格與製表符(橫向和縱向)

[:digit:]:匹配任意乙個數字字元,相當於[0-9]

[:lower:]:匹配小寫字母,相當於[a-z]

[:upper:]:匹配大寫字母,相當於[a-z]

[:punct:]:匹配標點符號

[:space:]:匹配乙個包括換行符、回車等在內的所有空白符

[:graph:]:匹配任何乙個可以看得見的且可以列印的字元

[:xdigit:]:任何乙個十六進製制數(即:0-9,a-f,a-f)

[:cntrl:]:任何乙個控制字元(ascii字符集中的前32個字元)

[:print:]:任何乙個可以列印的字元

四、元字元表示式:

元字元是一種perl風格的正規表示式,並不是所有的文字處理工具都支援,只有一部分文字處理工具支援元字元

(1)\b:匹配單詞邊界,例如,\boldboy\b只匹配oldboy單詞不匹配oldboy

(2)\b:匹配非單詞的邊界,例如,oldboy\b匹配oldboy123中的oldboy,不匹配單獨的oldboy單詞

(3)\w:匹配字母、數字與下劃線,等價於[_[:alnum:]]

(4)\w:匹配字母、數字與下劃線以外的字元,等價於[^_[:alnum:]]

(5)\d:匹配單個數字字元,注意,這個表示式需要使用grep -p引數才能識別

(6)\d:匹配單個非數字字元,注意,這個表示式需要使用grep -p引數才能識別

(7)\s:匹配1位空白字元,注意,這個表示式需要使用grep -p引數才能識別

(8)\s:匹配1位非空白字元,注意,這個表示式需要使用grep -p引數才能識別

特別說明:網上有很多特殊的元字元列表,大部分都不能直接被grep等命令使用

2、linux三劍客命令grep、sed、awk

(1)功能說明:sed是操作、過濾和轉換文字內容的強大工具。sed的常用功能包含對檔案實現快速增刪改查,其中查詢的功能中最常用的兩大功能是過濾(過濾指定字串)和取行(取出指定的行)

(2)語法格式:

sed      [選項]       [sed內建命令字元]        [輸入檔案]

(3)sed的常用引數選項

-n:取消預設sed的輸出,常與sed內建命令的p連用

-i:直接修改檔案內容,而不是輸出到終端。如果不使用「-i」選項則sed只是修改儲存在記憶體中的資料,並不會影響磁碟上的檔案

(4)sed的常用內建命令字元功能說明

d:全拼delete,表示匹配行的文字

i:全拼insert,表示插入文字,在指定行前新增一行或多行文字

p:全拼print,表示列印匹配行的內容,通常p會與選項「-n」一起使用

s/regexp/replacement/g:匹配regexp部分內容,用replacement替換regexp匹配的內容,regexp部分可以使用正規表示式,在replacement部分可以使用特殊字元「&」和「\1-\9」等匹配regexp的部分內容。在實戰場景中,s/regexp/replacement/g結尾常與g匹配做全域性的替換

二、awk命令:

(1)功能說明:awk不僅僅是linux系統中的乙個命令,而且其還是一種程式語言,可以用來處理資料和生成報告(excel)。處理的資料可以是乙個或多個檔案,它是linux系統最強大的文字處理工具,沒有之一。

(2)awk命令常用功能:

□指定分隔符顯示某幾列:awk -f "get|http" '' access.log直接獲取顯示出日誌檔案的url這一列

□通過正規表示式取出想要獲取的內容:awk '$6~/failed/' /var/log/secure分析生產環境中的日誌找出誰在破解使用者密碼

□顯示某個範圍內的內容:awk 'nr==20,nr==30' filename顯示檔案的20到30行

□通過awk進行統計計算:awk 'end' ett.txt進行總和計算(高階功能)

□awk陣列計算與去重:awk 'end' access.log對日誌進行統計與計數(高階功能)

(3)語法格式:

awk        [option]          'pattern'      file     ...

awk        [引數]             '條件'            檔案     ...

(4)awk命令的引數選項及說明

-f:指定字段分隔符

-v:定義或修改乙個awk內部的變數

(5)常用功能:

$0:當前整行記錄

$n:當前記錄的第n個列,欄位間由fs或-f引數指定分隔符

nf:當前記錄中列的個數,也就是包含多少列

$(nf-n):倒數第n+1列,n為數字

nr:已經獨處的記錄數,也就是行號,從1開始

Linux學習筆記1 1

arm架構處理器的工作模式 usr user 普通應用程式的執行模式 fiq fast interrupt 快速中斷模式,用於處理快速的事件,例如高速資料傳輸 irq interrupt 外部中斷模式,用於處理通用中斷事件 svc supervisor 又稱保護模式,作業系統使用的特權模式 abt ...

linux學習筆記11

linux和windows互傳檔案 首先的要安裝乙個軟體,只能使用xsell,不能使用putty因為putty不支援。安裝完軟體後就可以與windows相互傳檔案了 有linux向windows傳檔案使用sz反之使用rz 使用者配置檔案和密碼配置檔案 etc passwd 存放使用者的配置檔案。et...

學習筆記1 1

1.virtual修飾符會被 繼承的。private 也被整合,只事派生類沒有訪問許可權而已。virtual可加可不加。子類的空間裡有父類的所有變數 static除外 同乙個函式只存在乙個實體 inline除外 子類覆蓋它的函式不加virtual 也能實現多型。在子類的空間裡,有父類的私有變數。私有...