導航:首頁 > 編程系統 > linux正則表達式作用

linux正則表達式作用

發布時間:2023-04-05 02:21:10

linux 中 ^[^abc] 正則表達式什麼意思

^代錶行首,$代錶行尾
1、^[a-z]匹配以小寫字母開頭的字元串
2、[^a-z] 不包含小寫字母的字元匹配
3、^[^a-z] 開頭不包含小寫字母的字元匹配

㈡ Linux如何使用正則表達式命令文本文件操作命令

Linux對文本操作命令及正則表達式:

cat

cat 是 concatenate 的縮寫,所以它的作用其實是連接文件。但默認情況下它會將連接文件的結果送到標准輸出。所以我們常用來顯示文件內容。類似於 dos 中的 type。

more

當一個文件的內容超過一屏後,我們可以用 more 這個指令來逐屏 察看 文件內容。

less

less 在 more 的基礎上,更可以逐行 察看 ,前後翻頁。

head

head 顯示文件開頭部分內容,默認顯示前十行參數 --lines 或者 –n 指明顯示行數基本格式:

tail

tail 顯示文件結尾部分內容,命令用法同 head,參數 -f 顯示文件的紀實更新,用於監視日誌文件

tail 默認顯示文件列表中每個文件的後 10 行,如果沒有文件名或文件名為「-」則其從標准輸入中讀取文件,如果有多個文件則其會在文件前面加上「==>文件名<==」以便區別。

# tail /etc/mail/sendmail.mc 默認查看文件的後 10 行內容

# tail –n 20 /etc/passwd 查看文件後 20 行內容

注意: # tail –f /var/log/message 實時監控日誌文件更新信息,非常重要

diff

diff 用於比較兩個文件之間的區別,並送到標准輸出。輸出時先報告兩個文件的哪一行不同。基本格式:

參數:

uniq 用於去除文本中相鄰的重復行。

-u 參數可以只顯示那些沒有被重復過的行。 -d 顯示有被重復過的行。

cut

cut 可以根據一個指定的標記(默認是 tab)來為文本劃分列,然後將此列顯示。使用許可權:所有使用者

基本格式: cut -cnum1 -num2 filename

說明:顯示每行從開頭算起 num1 到 num2 的文字。

[root@uplooking root] $ cut –f1 –d: /etc/shadow 表示以 : 為分隔符,顯示 /etc/shadow 的第一列 sort

sort 用來按各種需要重新排列文本,一般運用在一個管道之後。例如:

默認情況下 sort 按照字母順序排列文本。

wc

wc 用來統計一個文件的行數、詞數、字數並送到標准輸出。也可以用-l(行數)、-w(詞數)、-c(字數)來指定輸出內容。

㈢ Linux正則表達式

一.linux文本查找命令

在說linux正規表達式之前,還介紹下linux中查找文本文件常用的三個命令:

1.grep : 最早的文本匹配程序,使用POSIX定義的基本正則表達式(BRE)來匹配文本。

2.egrep : 擴展式grep,其使用擴展式正規表達式(ERE)來匹配文本。

3.fgrep : 快速grep,這個版本匹配固定字元串而非正則表達式。並且是唯一可以並行匹配多個字元串的版本。

如下簡單的介紹grep命令:

語法格式:

grep [options ...] pattern-spec [files ...]

用途:

匹配一個或多個模式的文本行。

options:

-E : 使用擴展正則表達式進行匹配, grep -E 或取代 egrep 命令。

-F : 使用固定字元串進行匹配, grep -F 或取代傳統的fgrep命令。

-e : 通常第一個非選項的參數認為是要匹配的模式,也可以同時提供多個模式,只要將其放入單引號,並用換行字元分隔他們。

模式以減號開頭時,為防止混淆其為選項,-e選項說明其後的參數為模式,即使他以減號開頭。

-f : 從pat-file文件讀取模式作為匹配。

-i : 模式匹配時忽略大小寫差異。

-l : 列出匹配模式的文件名稱,而不是列印匹配的行。

-q : 靜默的,如果匹配成功,不將匹配的行輸出到標准輸出;否則即是不成功。

-s : 不顯示錯誤信息,通常與-q並用。

-v : 顯示不匹配模式的行。

說明:可以同時查找多個文件中的內容,當指定多個文件時,每個顯示出的文件行前會有文件名加一個冒號標識其來自哪個文件。

可以使用多個-e 或 -f 選項,建立要查找的模式列表。

二.正則表達式簡要介紹

1.正則表達式的組成

(1).一般字元:沒有特殊意義的字元

(2).特殊字元(meta字元):元字元,有在正則表達式中有特殊意義

2.如下講下正則表達式中的常見meta字元

(1).POSIX BRE與ERE中都有的meta字元:

\   :  通常用於打開或關閉後續字元的特殊含義,如\(...\)與\{...\}

.   :   匹配任何單個字元(除NUL)

*  :   匹配其前的任何數目或沒有的單個字元,例: . 表示任一字元, 則 .* 匹配任一字元的任意長度

^  :   匹配緊接著的正則表達式,BRE中僅在正則表達式的開頭有特殊的含義,ERE中在任何位置都有特殊含義

$  :   匹配前面的正則表達式,在字元串或者行結尾處。BRE中僅在正則表達式的結尾處有特殊的含義,ERE中在任何位置都有特殊含義

[]  :   匹配方括弧內的任一字元,其中可用連字元(-)指的連續字元的范圍;^符號苦出現在方括弧的第一個位置,則表示匹配不在列表中的任一字元,

(2).POSIX BRE中才有的字元:

\{n,m\} : 區間表達式,匹配在它前面的單個字元重現的次數區別。\{n\}指重現n次;\{n,m\}指重現n至m次;

\( \) : 保留空間,可以將最多9個獨立的子模式存儲在單個模式中。如\(ab\).*\1 : 指匹配ab組合的兩次重現,中間可存在任意數目的字元。

\n : 重復在\(與\)方括弧內第n個子模式至此點的模式。

(3).POSIX ERE中才有的字元:

{n,m} : 與BRE的\{n,m\}功能相同

+ : 匹配前面正則表達式的一個或多個擴展

? : 匹配前面正則表達式的零個或一個擴展

| : 匹配|符號前或後的正則表達式

( ) : 匹配方括弧括起來的正則表達式群

(4). 方括弧([])表達式

4.1.字元集  [:  :]

標識字元集,有如下幾種:

[::alnum] : 數字字元[:digit:] : 數字字元[:punct:] : 標點符號字元

[:alpha:] : 字母字元[:graph:] : 非空格字元[:space:] : 空格字元

[:blank:] : 空格與定位字元[:lower:] : 小寫字母字元[:upper:] : 大寫字母字元

[:cntrl:] : 控制字元[:print:] : 可顯示的字元[:xdigit:] : 16進制數字

 4.2.排序符號

指將多個字元視為一個符號,如[.ch.]即將ch視為一個符號

4.3.等價字元

認為多個字元相等,如[=e=]在法文的locale里,可匹配於多種與e相似的字元,此處不再列出。

說明:這三種構造除其自身的方括弧之外,還必須使用額外的方括弧括起來。

例 : [[:alpha:]!] : 匹配任一英文字母或感嘆號。

[[.ch.] : 匹配ch排序元素,而不匹配單獨的字母c或h.

 3.簡單正規表達式匹配案例

china  : 匹配此行中任意位置有china字元的行

^china : 匹配此以china開關的行

china$ : 匹配以china結尾的行

^china$ : 匹配僅有china五個字元的行

[Cc]hina : 匹配含有China或china的行

Ch.na : 匹配包含Ch兩字母並且其後緊跟一個任意字元之後又有na兩個字元的行

Ch.*na : 匹配一行中含Ch字元,並且其後跟0個或者多個字元,再繼續跟na兩字元

二.實例

如下通過常用實例來學習BRE和ERE匹配,源文件url.txt內容如下:

www..com

http://www..com

https://www..com

http://wwwcom

.com



1.url匹配

匹配以http或者https開頭,並且其後為:並且含有.的串

BRE匹配:

grep '^https\{0,1\}.*\..*' url.txt

ERE匹配:

grep -E '^https?.*\..*' url.txt

匹配結果如下:

http://www..com

https://www..com

2.Email匹配

示例文件內容為:

hfutwyy@qq.com

aaaa@

[email protected]

[email protected]

@@.com

匹配以字母數字或者下劃線開頭的多個字元,其後有一個@之後有多個字母數字或者下劃線,其中有一個.號

grep '^[[:alpha:][:digit:]_]*@[[:alpha:][:digit:]]*\..*' email.txt

 匹配結果:

[email protected]

[email protected]

[email protected]

轉自 嘉為教育-rhce認證_rhce培訓_linux培訓_linux認證_linux考證

㈣ linux中 正則表達式和通配符的區別

通配符
它是由shell解析,並且一般用於匹配文件名,實際上就是shell解釋器去解析的特殊符號,linux系統通配符有幾下幾種:
*:匹配任意多個字元
?:匹配任意一個字元
[...]:匹配中括弧內出現的任意一個字元
[!...]:不匹配中括弧內出現的任意一個字元

一般出現在要shell命令或腳本中,匹配特定的文件名

正則表達式
它是一個字元匹配標准,一些命令工具按此標准實現字元匹配,根據命令支持的匹配功能可分為基礎正則表達式和擴展正則表達式,常用於支持正則表達式的工具,如sed,grep,awk...
有如下一些常用的匹配元字元:

字元匹配
.:匹配任意單個字元
*:匹配其前面一個字元出現任意次
?:匹配其前面的字元1次或0次
+:匹配其前面一個字元出現至少一次(在擴展正則表達式中)

位置匹配
^:錨定行首
$:錨定行尾
\<或\b:錨定詞首,其後面的任意字元必須作為單詞首部出現
\>或\b:錨定詞尾,其前面的任意字元必須作為單詞尾部出現
\B:非單詞的開頭或結尾
^$:空白行

分組() :
(ab)* : 匹配ab這個分組出現任意次
\1:引用第一個左括弧以及與之對應的右括弧所包括的所有內容,同理還有\2,\3

特殊子字元類:
[:alnum:] :任何字母和數字
[:alpha:] :任何字母
[:cntrl:] :控制字元. 在ASCII表中對應八進制000 到 037, 和177 ('DEL').
[:digit:] :任何數字
[:graph:] :匹配列印字元,相當於'[:alnum:]' +'[:punct:]'.
[:lower:] :小寫字母
[:print:] :可列印字元,相當於 '[:alnum:]', '[:punct:]', 和space.
[:punct:] 標點符號,'! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ' { | } ~'
[:space:] 空白字元,tab, newline, vertical tab, form feed, carriage return, and space.
[:upper:] 大寫字母
[:xdigit:] 任何16進制的數字,相當於[0-9a-fA-F]
所以:^[[:space:]]*$ :匹配沒有任何內容的行

需要注意:[]中的特殊字元如.已經失去了其特殊含義,和方括弧中的普通字元[abc]一樣。

閱讀全文

與linux正則表達式作用相關的資料

熱點內容
maya粒子表達式教程 瀏覽:84
抖音小視頻如何掛app 瀏覽:283
cad怎麼設置替補文件 瀏覽:790
win10啟動文件是空的 瀏覽:397
jk網站有哪些 瀏覽:134
學編程和3d哪個更好 瀏覽:932
win10移動硬碟文件無法打開 瀏覽:385
文件名是亂碼還刪不掉 瀏覽:643
蘋果鍵盤怎麼打開任務管理器 瀏覽:437
手機桌面文件名字大全 瀏覽:334
tplink默認無線密碼是多少 瀏覽:33
ipaddgm文件 瀏覽:99
lua語言編程用哪個平台 瀏覽:272
政采雲如何導出pdf投標文件 瀏覽:529
php獲取postjson數據 瀏覽:551
javatimetask 瀏覽:16
編程的話要什麼證件 瀏覽:94
錢脈通微信多開 瀏覽:878
中學生學編程哪個培訓機構好 瀏覽:852
榮耀路由TV設置文件共享錯誤 瀏覽:525

友情鏈接