1. 程式人生 > >shell程式設計-正則表示式

shell程式設計-正則表示式

1、正則表示式是什麼

正則表示式是用於字元排列和匹配模式的一種語法規則。它主要用於字串的模式分割、匹配、查詢及替換操作。

2、正則表示式與萬用字元

  • 正則表示式用來在檔案中匹配符合條件的字串,正則是包含匹配。grep、awk、sed等命令可以支援正則表示式。
  • 萬用字元用來匹配符合條件的檔名,萬用字元是完全匹配。ls、find、cp這些命令不支援正則表示式,所以只能使用shell自己的萬用字元進行匹配了。

萬用字元:

  • *:匹配任意內容
  • ?: 匹配任意一個內容
  • []:匹配中括號中的一個字元

3、基礎正則表示式

元字元 作用
* 前一個字元匹配0次或任意多次。
. 匹配除了換行符外任意一個字元。
^ 匹配行首。例如^hello會匹配以hello開頭的行。
$ 匹配行尾。例如hello$會匹配以hello結尾的行。
[] 匹配中括號中指定的任意一個字元,只匹配一個字元。例如[aoeiu]匹配任意一個母音字元,[0-9]匹配任意一個數字,[a-z][0-9]匹配小寫字和一位數字構成的兩位字元
[^] 匹配除中括號的字元以外的任意一個字元。例如:[^0-9]匹配任意一位非數字字元,[^a-z]表示任意一位非小寫字母。
\ 轉義符。用於取消講特殊符號的含義取消。
\{n,\} 表示其前面的字元恰好出現n次。例如[0-9]\{4\}匹配4位數字,
\{n,m\} 表示前面的字元至少出現一次,最多出現m次。例如[a-z]\{6,8}匹配6到8位的小寫字母。

補充:
?()屬於擴充套件正則
修改~/.bashrc配置檔案,為grep起別名,將匹配出來的用顏色顯示alias grep=’grep –color=auto’

例如:*號的示例

[[email protected] home]# grep aa* test.txt 
a
aa
aaa
aaaa
aaaaa
ab
aabb

例如
“.”:匹配除了換行符外任意一個字元
“s..d”:會匹配在s和d這兩個字母之間一定有兩個字元的單詞

[root@localhost home]# grep "s..d" test.txt 
said
soid
sdkdkdkd

“s.*d”:匹配在s和d字母之間有任意字元

[root@localhost home]# grep "s.*d" test.txt 
said
soid
sdkdkdkd

“.*”:匹配所有內容

[root@localhost home]# grep ".*" test.txt 
a
aa
aaa
aaaa
aaaaa

ab
aabb

b
bb
bbb
bbbb
bbbb


said
soid
sdkdkdkd

例如
“^”匹配行首,”$”匹配行尾
“^M”:匹配以大寫“M”開頭的行

[root@localhost home]# grep "^a" test.txt 
a
aa
aaa
aaaa
aaaaa
ab
aabb

“n$”:匹配以小寫“n”結尾的行

[root@localhost home]# grep "b$" test.txt 
ab
aabb
b
bb
bbb
bbbb
bbbb

“^$”:匹配空白行顯示,增加-n選項,顯示行號

[[email protected] home]# grep -n "^$" test.txt 
6:
9:
15:
16:

例如
“[]” : 匹配中括號中指定的任意一個字元,只匹配一個字元。

“s[ao]id”:匹配s和i字母中間,要麼是a,要麼是o的字串

[root@localhost home]# grep -n "s[ao]id" test.txt 
17:said
18:soid

“[0-9]”:匹配包括任意一個數字的行

[[email protected] home]# grep -n "[0-9]" test.txt 
22:6adfadfadf8
23:jladf8002378
25:ladfjadf7
27:3333333333
29:2222222222

“^[a-z]”:匹配用小寫字母開頭的行

[root@localhost home]# grep "^[a-z]" test.txt 
a
aa
aaa
aaaa
aaaaa
ab
aabb
b
bb
bbb
bbbb
bbbb
said
soid
sdkdkdkd
jladf8002378
ladfjadf7

“[a-z]$”:匹配用小寫字母結尾的行

[[email protected] home]# grep "[a-z]$" test.txt 
a
aa
aaa
aaaa
aaaaa
ab
aabb
b
bb
bbb
bbbb
bbbb
said
soid
sdkdkdkd

[[email protected] home]# grep "^[a-z]$" test.txt 
a
b
[[email protected] home]# grep "^[a-z][a-z]$" test.txt 
aa
ab
bb

“[^]”:匹配除中括號的字元以外的任意字元。(說明:^放在中括號內)

“^[^a-z]”:匹配不用小寫字母開頭的行

[root@localhost home]# grep "^[^a-z]" test.txt 
6adfadfadf8
3333333333
2222222222

“^[^a-zA-Z]”:匹配不用字母開頭的行

[root@localhost home]# grep "^[^a-zA-Z]" test.txt 
6adfadfadf8
3333333333
2222222222

“\”:轉義字元,作用讓特殊的字元喪失意義
“.$”:匹配使用”.”結尾的行

[root@localhost home]# grep "\.$" test.txt 
6adfadfadf8.

“\{n\}”:表示其前面的字元恰好出現n次
“a\{3\}”:匹配a字母連續出現三次的字串。
注意:至少重複3次,匹配出來的結果顯示超過3個字串也會顯示到結果中

[root@localhost home]# grep "a\{3\}" test.txt 
aaa
aaaa
aaaaa

“[0-9]\{3\}”:匹配包括連續的三個數字的字串

要想準確查詢,需要加定界符

相關推薦

Linux學習基礎之Shell程式設計——表示式

1、正則表示式與萬用字元 》正則表示式用來在檔案中匹配符合條件的字串,正則是包含匹配。grep、awk、sed等命令可以支援正則表示式。 》萬用字元用來匹配符合條件的檔名,萬用字元是完全匹配。ls、find、cp等這些命令不支援正則表示式,所以只能使用shell自己的萬用字元來進行匹配了

shell程式設計-表示式

1、正則表示式是什麼 正則表示式是用於字元排列和匹配模式的一種語法規則。它主要用於字串的模式分割、匹配、查詢及替換操作。 2、正則表示式與萬用字元 正則表示式用來在檔案中匹配符合條件的字串,正則是包含匹配。grep、awk、sed等命令可以支援正則表

Shell 基礎表示式

正則表示式與萬用字元 1)正則表示式用來在檔案中匹配符合條件的字串,正則是包含匹配。Grep、awk、sed等命令可以支援正則表示式。 2)萬用字元用來匹配符合條件的檔名,萬用字元是完全匹配。ls、find、cp這些命令不支援正則表示式,所以只能使用shell自己的萬用字元來進行匹配

shell 常用表示式

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

shell表示式

##shell中的文字處理正則表示式## gerp指令 grep root passwd ##過濾passwd中帶root的行## grep -i root passwd ##忽略大小寫## gerp -i root$ passwd ##已root結尾的## grep -i ^ro

風火程式設計--表示式應用

正則表示式的推薦使用方式–預編譯 import re s = "12hjk" pattern = re.compile('.{4}') r = pattern.match(s) ret1 = r.gro

【傑瑞的專欄】架構師、指令碼語言專家;精通Python、Shell表示式;熟悉Java、C、Tcl、Ruby、Scala、Perl等多種程式語言;在效能,開源,自動化測試方面有非常豐富的經驗

傑瑞的專欄 架構師、指令碼語言專家;精通Python、Shell、正則表示式;熟悉Java、C、Tcl、Ruby、Scala、Perl等多種程式語言;在效能,開源,自動化測試方面有非常豐富的經驗...

面試題------程式設計----表示式匹配

正則表示式匹配 題目描述: JOBDU最近來了一個新員工Fish,每天早晨總是會拿著一本英文雜誌,寫些句子在本子上。同事Cat對Fish寫的內容頗感興趣,有一天他向Fish借來翻看,但卻讀不懂它的意思。例如,“student. a am I”。後來才意識到,這傢伙原來把句子

shell表示式的使用

下面介紹shell中正則表示式的兩種使用方法。 使用方法一: #賦值給變數var read var #定義regex正則表示式 regex="[0-9]" if [[ $var =~ $r

『黑馬程式設計師』---java--網路程式設計--表示式

----------- android培訓、java培訓、java學習型技術部落格、期待與您交流! ------------ RegEx 正則表示式:符合一定規則的表示式 作用:用於專門操作字串[操作字串的一種規則] 特點:用一些特定的符號來表示一些程式碼操作.這

shell表示式

一 正則表示式 正則表示式:描述某些字串匹配規則的工具 使用原因:程式設計過程中不可避免的遇到處理某些文字情況,有時候要查詢符合某些比較複雜規則的字串。正則表示式以非常簡單的程式碼完成。 常見的支援正則表示式的UNIX工具: grep命令族:用於匹配文字行 se

python核心程式設計-表示式之-匹配多個字串

#!/usr/bin/env python # -*- coding: UTF-8 -*- import re bt = 'bat|bet|bit' m = re.match(bt,'bat') i

shell表示式的匹配

一、用法講解 (1).匹配任意單字元 例如:..xc..表示第一、二、五、六個字母任意三四個字母是xc的字串 (2)^匹配字串的開頭的字母 例如:^d表示以d開頭的字串 (3)$匹配字串結尾的字母 trobule$表示匹配以trobule結尾的行 d$表示匹配以字母d結尾的

shell高階-----表示式

正則表示式概述 正則表示式是一種定義的規則,Linux工具可以用它來過濾文字。 基礎正則表示式 純文字 [root@node1 ~]# echo "this is a cat" | sed -n '/cat/p' this is a cat [root@node1 ~]# echo "this

linux學習筆記之shell程式設計(一)表示式與字元處理

shell程式設計 基礎正則表示式 正則和萬用字元的區別:正則是包含匹配,匹配檔案內容,grep,awk等支援正則表示式。萬用字元是完全匹配,匹配檔名,例如find,ls不認識正則表示式 ####正則表示式常用的字元(注意區別於萬用字元裡面的符號)#### -*

shell 程式設計3 表示式

1 正則表示式和萬用字元: 正則表示式用來在檔案中匹配符合條件的字串,正則是包含匹配。 grep、awk、sed等命令可以支援正則表示式。 萬用字元用來匹配符合條件的檔名,萬用字元是完全匹配。ls、find、cp這些命令不支援正則表示式,所以只能使用s

linux下shell 程式設計之擴充套件表示式

1. ‘+’ 限定字元 +限定符表示前面字元至少出現一次或者多次。與*不同在於0次或者多次 2. '?' 限定符 ?限定前面的字元最多出現一次。即出現0次或者1次 3. 數線 |和圓括號() 例如

shell指令碼程式設計學習筆記(2)表示式

編寫shell指令碼時經常用到的基本操作就是尋找包含特定文字的行,雖然用簡單的grep命令可以完成一些簡單的工作,但是正則表示式無疑是繞不開的。本文主要介紹基本正則表示式。 總的來說,正則表示式由兩部分組成:一般字元和特殊字元。特殊字元(meta)在正則表示式中往往具有特

shell文字過濾程式設計(一):grep和表示式

Linux系統中有很多檔案,比如配置檔案、日誌檔案、使用者檔案等。檔案中都包含了大量的資訊,我們可以使用cat等命令輕鬆將其輸出到螢幕,但如果要從檔案中分析或提取資料,還需要其他工具來實現。而linux正好提供了這些工具:grep、awk、sed等。把這些工具使用好,可以

Shell學習之表示式-----grep

grep 1. 作用 Linux系統中grep命令是一種強大的文字搜尋工具,它能使用正則表示式搜尋文字,並把匹 配的行打印出來。grep全稱是Global Regular Expression Print,表示全域性正則表示式版本,它的使用許可權是所有使用者。 grep家族包括gre