正規表示式

2021-09-08 14:58:26 字數 3093 閱讀 1056

linux其實和internet一樣,都是乙個充滿了大量資訊、資料的東西,如何有效的過濾自己不用的資訊、獲取有用的資訊反映了乙個人水平的高低,這時候用各種工具與正則的結合變的異常強大

正規表示式(regular expression)描述了一種字串匹配的模式,可以用來檢查乙個串是否含有某種子串、將匹配的子串做替換或者從某個串中取出符合某個條件的子串等。

awk 對於從大的資料檔案中抽取指定的資料報十分有用,比如你可以用他來管理passwd檔案,或者是日誌檔案(相當巨大的檔案,而用了awk就會變的很輕鬆了),通常awk都是和grep結合來用的,用grep抽出行,再用awk抽出行中指定的列,不過就算單獨用awk也一樣好用。

正規表示式只是一種表示法,只要工具支援這種表示法, 那麼該工具就可以處理正規表示式的字串。find、vim、grep、awk 、sed 都支援正規表示式,也正是因為由於它們支援正則,才顯得它們強大

正則可以在許多種

不同的unix/linux 程式中使用,例如:find,grep,expr,vi,sed等

不同的程式語言中使用,例如:awk,perl,python等

在不同的程式與語言中有一些差異

下面的都是典型的通用概念,

預定義字元類

[:alnum:]  alphanumeric characters.

[:alpha:]  alphabetic characters.

[:blank:]  space or tab characters.

[:cntrl:]  control characters.

[:digit:]  numeric characters.

[:graph:]  characters that are both printable and visible.  (a space is printable, but not visible, while an a is both.)

[:lower:]  lower-case alphabetic characters.

[:print:]  printable characters (characters that are not control  characters.)

[:punct:]  punctuation characters (characters that are not letter, digits, control characters, or space characters).

[:space:]  space characters (such as space, tab, and formfeed, to  name a few).

[:upper:]  upper-case alphabetic characters.

[:digit:]  characters that are hexadecimal digits.

grep 支援三種正則 基本 擴充套件 perl

正規表示式語法支援情況

命令或環境.

[ ]

^

$

\( \)

\

?

+

|

( )

vix 

x x 

x x 

visual c++

x x 

x x 

x awk

x x 

x x 

x x 

x x 

sedx 

x x 

x x 

x tcl

x x 

x x 

x x 

x x 

x ex

x x 

x x 

x x 

grep

x x 

x x 

x x 

egrepx x

x x 

x x 

x x 

x fgrep

x x 

x x 

x perlxx

***x

xxx

命令名正則

通配ls

*grep**

find

*sed

*awk

* [root@250-shiyan ~]# df|sed -n '/\/$/p'|awk ''|sed 's/%//'

[root@250-shiyan ~]# df|grep "/$"|awk ''|sed 's/%//'  grep awk sed 合稱拼命三郎或三劍客

cut也是乙個比較強大的工具,可以對一行字串進行多種模式匹配的剪下操作,也可以對乙個排列非常整齊的文字進行操作

cut -d ':' -f 2  以分隔符為界

cut -c 2-5    以字母為界

grep主要對行過濾查詢

sed options 『command』 file

options

p 列印

s 搜尋

sed和grep主要是對文字進行「行」的操作,sed與awk是文字處理工具

awk方法主要是對文字進行「列」的操作,awk會把每一列都取乙個名字,從第一列開始:分別為$1,$2...$n

awk [-f] "field-operator" 'comand' inputfiles

-f和field-operator一起使用,field-operator是域分隔符,如果不使用-f選項,則預設的域分隔符為空格。後面command命令一般需要用一堆「{}」括起來,然後進行必要的操作

sed -n  只將符合模式的行列出來

命令名列操作

行操作輸入

cutinput file

std input

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...