當前位置:首頁 » 操作系統 » linuxif正則

linuxif正則

發布時間: 2023-05-25 10:31:33

A. linux正則表達式與通配符

正則表達式:在計算機科學中,是指一個用來描述或者匹配一系列符合某個句法規則的字元串的單個字元串。在很多文本編輯器或其他工具里,正則表達式通常被用來檢索或替換那些符合某個模式的文本內容。正則表達式這個概念最初是由Unix中的工具軟體(例如sed和grep)普及開的。
只有掌握了正則表達式,才能全面地掌握 Linux 下的常用文本工具(例如:grep、egrep、GUN sed、 Awk 等) 的用法

grep、sed、awk天然支持正則
grep -v代表反選,反向選擇匹配到的內容
grep -E代表使用擴展正則
grep -P代表使用Perl正則
sed -r 代表使用擴展正則

正則表達式分為三類(man grep可以看到,分別是basic RegExs,extended RegExs,perl RegExs)
1、基本的正則表達式(Basic Regular Expression 又叫 Basic RegEx 簡稱 BREs)
2、擴展的正則表達式(Extended Regular Expression 又叫 Extended RegEx 簡稱 EREs)
3、Perl 的正則表達式(Perl Regular Expression 又叫 Perl RegEx 簡稱 PREs)

b. 處理過程:查找文本文件中是否包含要查找的 「關鍵字」(關鍵字可以是正則表達式) ,默認返回匹配的該行的內容
c. grep|egrep處理文件時,按行處理 |
| sed | sed | sed -r | - | a. 處理對象:文本文件
b.處理操作:對文本文件的內容進行 查找、替換、刪除、增加等操作
c. sed 在處理文本文件的時候,按行處理 |
| awk | - | awk | - | a. awk 處理的對象:文本文件
b. awk 處理操作:主要是對列進行操作 |

注意:egrep 或 sed -r 默認使用擴展正則表達式(EREs),一般特殊字元({})可以不轉義

grep -E 以及egrep(Extend Regular Expression)

Linux通配符和三劍客的正則表達式是不一樣的,因此,代表的意義也有較大的區別
通配符一般用戶命令行bash環境,而linux正則表達式用於grep, sed, awk場景。

通配符說明

示例:* 的使用:代表任意0-N個字元,代表所有字元

B. 在linux下如何用正則表達式執行ifconfig命令,只顯示IP地址的內容!

貌似這個可以,但要用兩次awk
ifconfig eth0 |grep '飢侍inte addr'爛晌吵謹拿 |awk '{print $2}' |awk -F ":" '{print $2}'

C. Linux shell里用正則表達式怎麼表示一段文字,只包括英文字母和空格

str="這祥塌里是你所亂鄭謂的一段文字"
echo "$str" | egrep "^[a-zA-Z ]*$" >/dev/null
if [ $? -eq 0 ]; then
echo "The string is accepted."嘩宴頌
else
echo "The string is NOT accepted!"
fi

--------------------------------
^[a-zA-Z ]*$
這就是你要的正則表達式,方括弧中包括小寫字母、大寫字母和空格。

D. 怎麼用Linux 正則表達式過濾出IP地址

用正則表達散簡式提取網址的方式如下沖乎褲:頃纖 用ifconfig來提取 ifconfig eth0|grep "inet addr"|awk '{print $2}'|awk -F: '{print $2}'192.168.10.1 用ip addr來提齲 ip addr | grep -Po '[^ ]+(?=/\d)'

E. Linux Shell正則表達式如何匹配1~3位數字

grep '^[0-9]\{1,3\}$' test.txt | grep '^[1-9]'

如果是變數

echo $var | grep '^[0-9]\{1,3\}$' | grep '^[1-9]'

$表示行尾

這個正則不匹配 12a 這樣的字元串

你的變數內容是什麼樣的?

我用來測試的 test.txt 的內容:
123
321
123212
001
010
100
10000
0011
10101
1101
1
2
3
11
22
33
1a
2a

F. Linux必須學會的60個命令:文件處理1

Linux系統信息存放在文件里,文件與普通的公務文件類似。每個文件都有自己的褲悔名字、內容、存放地址及其它一些管理信息,如文件的用戶、文戚純姿件的大小等。文件可以是一封信、一個通訊錄,或者是程序的源語句、程序的數據,甚至可以包括可執行的程序和其它非正文內容。Linux文件系統具有良好的結構,系統提供了很多文件處理程序。這里主要介紹常用的文件處理命令。

file 1.作用file通過探測文件內容判斷文件類型,使用許可權是所有用戶。

2.格式file [options]文件名3.[options]主要參數-v:在標准輸出後顯示版本信息,並且退出。

-z:探測壓縮過的文件類型。

-L:允許符合連接。

-f name:從文件namefile中讀取要分析的文件名列表。

4.簡單說明使用file命令可以知道某個文件究竟是二進制(ELF格式)的可執行文件,還是Shell Script文件,或者是其它的什麼格式。file能識別的文件類型有目錄、Shell腳本、英文文本、二進制可執行文件、C語言源文件、文本文件、DOS的可執行文件。

5.應用實例如果我們看到一個沒有後綴的文件grap,可以使用下面命令:

$ file grap grap:English text 此時系統顯示這是一個英文文本文件。需要說明的是,file命令不能探測包括圖形、音頻、視頻等多媒體文件類型。

mkdir 1.作用mkdir命令的作用是建立名稱為dirname的子目錄,與MS DOS下的md命令類似,它的使用許可權是所有用戶。

2.格式mkdir [options]目錄名3.[options]主要參數-m,--mode=模式:設定許可權<模式>,與chmod類似。

-p,--parents:需要時創建上層目錄;如果目錄早已存在,則不當作錯誤。

-v,--verbose:每次創建新目錄都顯示信息。

--version:顯示版本信息後離開。

4.應用實例在進行目錄創建時可以設置目錄的許可權,此時使用的參數是「-m」。假設要創建的目錄名是「tsk」,讓所有用戶都有rwx(即讀、寫、執行的許可權),那麼可以使用以下命令:

$ mkdir-m 777 tsk grep 1.作用grep命令可以指定文件中搜索特定的內容,並將含有這些內容的行標准輸出。grep全稱是Global Regular Expression Print,表示全局正則表達式版本,它的使用許可權是所有用戶。

2.格式grep [options] 3.主要參數[options]主要參數:

-c:只輸出匹配行的計數。

-I:不區分大小寫(只適用於單字元)。

-h:查詢多文件時不顯示文件名。

-l:查詢多文件時只輸出包含匹配字元的文件名。

-n:顯示匹配行及行號。

-s:不顯示不存在或無高絕匹配文本的錯誤信息。

-v:顯示不包含匹配文本的所有行。

pattern正則表達式主要參數:

:忽略正則表達式中特殊字元的原有含義。

^:匹配正則表達式的開始行。

$:匹配正則表達式的結束行。

<:從匹配正則表達式的行開始。

>:到匹配正則表達式的行結束。

[ ]:單個字元,如[A]即A符合要求。

[ - ]:范圍,如[A-Z],即A、B、C一直到Z都符合要求。

。:所有的單個字元。

*:有字元,長度可以為0。

正則表達式是Linux/Unix系統中非常重要的概念。正則表達式(也稱為「regex」或「regexp」)是一個可以描述一類字元串的模式(Pattern)。如果一個字元串可以用某個正則表達式來描述,我們就說這個字元和該正則表達式匹配(Match)。這和DOS中用戶可以使用通配符「*」代表任意字元類似。在Linux系統上,正則表達式通常被用來查找文本的模式,以及對文本執行「搜索-替換」操作和其它功能。4.應用實例查詢DNS服務是日常工作之一,這意味著要維護覆蓋不同網路的大量IP地址。有時IP地址會超過2000個。如果要查看nnn.nnn網路地址,但是卻忘了第二部分中的其餘部分,只知到有兩個句點,例如nnn nn..。要抽取其中所有nnn.nnn IP地址,使用[0-9 ]{3 }.[0-0{3}。含義是任意數字出現3次,後跟句點,接著是任意數字出現3次,後跟句點。

$grep '[0-9 ]{3 }.[0-0{3}' ipfile 補充說明,grep家族還包括fgrep和egrep。fgrep是fix grep,允許查找字元串而不是一個模式;egrep是擴展grep,支持基本及擴展的正則表達式,但不支持q模式范圍的應用及與之相對應的一些更加規范的模式。

dd 1.作用dd命令用來復制文件,並根據參數將數據轉換和格式化。

2.格式dd [options] 3.[opitions]主要參數bs=位元組:強迫ibs=<位元組>及obs=<位元組>。

cbs=位元組:每次轉換指定的<位元組>。

conv=關鍵字:根據以逗號分隔的關鍵字表示的方式來轉換文件。

count=塊數目:只復制指定<塊數目>的輸入數據。

ibs=位元組:每次讀取指定的<位元組>。

if=文件:讀取<文件>內容,而非標准輸入的數據。

obs=位元組:每次寫入指定的<位元組>。

of=文件:將數據寫入<文件>,而不在標准輸出顯示。

seek=塊數目:先略過以obs為單位的指定<塊數目>的輸出數據。

skip=塊數目:先略過以ibs為單位的指定<塊數目>的輸入數據。

4.應用實例

dd命令常常用來製作Linux啟動盤。先找一個可引導內核,令它的根設備指向正確的根分區,然後使用dd命令將其寫入軟盤:

$ rdev vmlinuz /dev/hda $dd if=vmlinuz of=/dev/fd0

上面代碼說明,使用rdev命令將可引導內核vmlinuz中的根設備指向/dev/hda,請把「hda」換成自己的根分區,接下來用dd命令將該內核寫入軟盤。

find 1.作用find命令的作用是在目錄中搜索文件,它的使用許可權是所有用戶。

2.格式find [path][options][expression] path指定目錄路徑,系統從這里開始沿著目錄樹向下查找文件。它是一個路徑列表,相互用空格分離,如果不寫path,那麼默認為當前目錄。

3.主要參數[options]參數:

-depth:使用深度級別的查找過程方式,在某層指定目錄中優先查找文件內容。

-maxdepth levels:表示至多查找到開始目錄的第level層子目錄。level是一個非負數,如果level是0的話表示僅在當前目錄中查找。

-mindepth levels:表示至少查找到開始目錄的第level層子目錄。

-mount:不在其它文件系統(如Msdos、Vfat等)的目錄和文件中查找。

-version:列印版本。

[expression]是匹配表達式,是find命令接受的表達式,find命令的所有操作都是針對表達式的。它的參數非常多,這里只介紹一些常用的參數。

—name:支持統配符*和?。

-atime n:搜索在過去n天讀取過的文件。

-ctime n:搜索在過去n天修改過的文件。

-group grpoupname:搜索所有組為grpoupname的文件。

-user用戶名:搜索所有文件屬主為用戶名(ID或名稱)的文件。

-size n:搜索文件大小是n個block的文件。

-print:輸出搜索結果,並且列印。

4.應用技巧find命令查找文件的幾種方法:

(1)根據文件名查找例如,我們想要查找一個文件名是lilo.conf的文件,可以使用如下命令:

find /-name lilo.conf find命令後的「/」表示搜索整個硬碟。

(2)快速查找文件根據文件名查找文件會遇到一個實際問題,就是要花費相當長的一段時間,特別是大型Linux文件系統和大容量硬碟文件放在很深的子目錄中時。如果我們知道了這個文件存放在某個目錄中,那麼只要在這個目錄中往下尋找就能節省很多時間。比如smb.conf文件,從它的文件後綴「.conf」可以判斷這是一個配置文件,那麼它應該在/etc目錄內,此時可以使用下面命令:

find /etc-name smb.conf 這樣,使用「快速查找文件」方式可以縮短時間。

(3)根據部分文件名查找方法有時我們知道只某個文件包含有abvd這4個字,那麼要查找系統中所有包含有這4個字元的文件可以輸入下面命令:

find /-name '*abvd*'

輸入這個命令以後,Linux系統會將在/目錄中查找所有的包含有abvd這4個字元的文件(其中*是通配符),比如abvdrmyz等符合條件的文件都能顯示出來。

(4)使用混合查找方式查找文件

find命令可以使用混合查找的方法,例如,我們想在/etc目錄中查找大於500000位元組,並且在24小時內修改的某個文件,則可以使用-and (與)把兩個查找參數鏈接起來組合成一個混合的查找方式。

find /etc -size +500000c -and -mtime +1

mv 1.作用mv命令用來為文件或目錄改名,或者將文件由一個目錄移入另一個目錄中,它的使用許可權是所有用戶。該命令如同DOS命令中的ren和move的組合。

2.格式mv[options]源文件或目錄目標文件或目錄3.[options]主要參數-i:交互方式操作。如果mv操作將導致對已存在的目標文件的覆蓋,此時系統詢問是否重寫,要求用戶回答「y」或「n」,這樣可以避免誤覆蓋文件。

-f:禁止交互操作。mv操作要覆蓋某個已有的目標文件時不給任何指示,指定此參數後i參數將不再起作用。

4.應用實例(1)將/usr/cbu中的所有文件移到當前目錄(用「.」表示)中:

$ mv /usr/cbu/ * . (2)將文件cjh.txt重命名為wjz.txt:

$ mv cjh.txt wjz.txtls 1.作用ls命令用於顯示目錄內容,類似DOS下的dir命令,它的使用許可權是所有用戶。

2.格式ls [options][filename] 3.options主要參數-a,--all:不隱藏任何以「.」字元開始的項目。

-A,--almost-all:列出除了「.」及「..」以外的任何項目。

-b,--escape:以八進制溢出序列表示不可列印的字元。

--block-size=大小:塊以指定<大小>的位元組為單位。-B,--ignore-backups:不列出任何以~字元結束的項目。

-f:不進行排序,-aU參數生效,-lst參數失效。

-F,--classify:加上文件類型的指示符號(*/=@|其中一個)。

-g:like-l, but do not list owner。

-G,--no-group:inhibit display of group information。

-i,--inode:列出每個文件的inode號。

-I,--ignore=樣式:不印出任何符合Shell萬用字元<樣式>的項目。

-k:即--block-size=1K。

-l:使用較長格式列出信息。

-L,--dereference:當顯示符號鏈接的文件信息時,顯示符號鏈接所指示的對象,而並非符號鏈接本身的信息。

-m:所有項目以逗號分隔,並填滿整行行寬。

-n,--numeric-uid-gid:類似-l,但列出UID及GID號。

-N,--literal:列出未經處理的項目名稱,例如不特別處理控制字元。

-p,--file-type:加上文件類型的指示符號(/=@|其中一個)。

-Q,--quote-name:將項目名稱括上雙引號。

-r,--reverse:依相反次序排列。

-R,--recursive:同時列出所有子目錄層。

-s,--size:以塊大小為序。

diff 1.作用diff命令用於兩個文件之間的比較,並指出兩者的不同,它的使用許可權是所有用戶。

G. linux 正則表達式怎麼匹配

php">一.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).POSIXBRE與ERE中都有的meta字元:
:通常用於打開或關閉後續字元的特殊含義,如(...)與{...}
.:匹配任何單個字元(除NUL)
*:匹配其前的任何數目或沒有的單個字元,例:.表示任一字元,則.*匹配任一字元的任意長度
^:匹配緊接著的正則表達式,BRE中僅在正則表達式的開頭有特殊的含義,ERE中在任何位置都有特殊含義
$:匹配前面的正則表達式,在字元串或者行結尾處。BRE中僅在正則表達式的結尾處有特殊的含義,ERE中在任何位置都有特殊含義
[]:匹配方括弧內的任一字元,其中可用連字元(-)指的連續字元的范圍;^符號苦出現在方括弧的第一個位置,則表示匹配不在列表中的任一字元,
(2).POSIXBRE中才有的字元:
{n,m}:區間表達式,匹配在它前面的單個字元重現的次數區別。{n}指重現n次;{n,m}指重現n至m次;
():保留空間,可以將最多9個獨立的子模式存儲在單個模式中。如(ab).*1:
指匹配ab組合的兩次重現,中間可存在任意數目的字元。
:重復在(與)方括弧內第n個子模式至此點的模式。
(3).POSIXERE中才有的字元:
{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..comhttp://www..comhttps://www..comhttp://wwwcom.com
1.url匹配
匹配以http或者https開頭,並且其後為:並且含有.的串
BRE匹配:
grep'^https{0,1}.*..*'url.txt
ERE匹配:
grep-E'^https?.*..*'url.txt
匹配結果如下:
http://www..comhttps://www..com
2.Email匹配
示例文件內容為:
[email protected]@[email protected]@gmail.com
@@.com
匹配以字母數字或者下劃線開頭的多個字元,其後有一個@之後有多個字母數字或者下劃線,其中有一個.號
grep'^[[:alpha:][:digit:]_]*@[[:alpha:][:digit:]]*..*'email.txt
匹配結果:
[email protected]@[email protected]
先到這里,後續再接著寫。

H. Linux中,正則表達式的作用是什麼

正則表達式主要用來描述、匹配一系列符合某個句法規則的字元串。很多時候用在查詢操作上。

I. linux 正則表達式 *[!0-9]*

*[!0-9]* 意判鋒慧思是字元串掘答裡面只要有一個非數字

*[0-9]* 意思是字元串裡面只要有一個是數字基畢

J. 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(字數)來指定輸出內容。

熱點內容
scratch少兒編程課程 發布:2025-04-16 17:11:44 瀏覽:642
榮耀x10從哪裡設置密碼 發布:2025-04-16 17:11:43 瀏覽:368
java從入門到精通視頻 發布:2025-04-16 17:11:43 瀏覽:89
php微信介面教程 發布:2025-04-16 17:07:30 瀏覽:312
android實現陰影 發布:2025-04-16 16:50:08 瀏覽:794
粉筆直播課緩存 發布:2025-04-16 16:31:21 瀏覽:347
機頂盒都有什麼配置 發布:2025-04-16 16:24:37 瀏覽:213
編寫手游反編譯都需要學習什麼 發布:2025-04-16 16:19:36 瀏覽:818
proteus編譯文件位置 發布:2025-04-16 16:18:44 瀏覽:369
土壓縮的本質 發布:2025-04-16 16:13:21 瀏覽:596