當前位置:首頁 » 操作系統 » linux正則文件

linux正則文件

發布時間: 2023-01-25 05:38:21

linux基本操作10-----正則表達式與文件格式化處理


正則表達式
1
簡單的說正則表達式就是處理字元串的方法,它是以行為單位來進行字元串的處理行為,正則表達式通過一些特殊符號的輔助,可以讓用戶輕易的達到查找,刪除,替換某特定字元串的處理程序
2
grep在數據中查找一個字元串時,是以整行為單位來進行數據的選取的,也就是說假如一個文件內有10行,那麼其中兩行是有用的,那麼就將這兩行顯示出來,其它的丟棄
3
在bash當中,我們知道通配符*可以用來表示任意個字元,但是正則表達式中的*表示不同的含義
在正則表達式中,'.'表示的是一定有一個任意字元的意思
在正則表達式中,'*'表示的是重復前一個字元0到無窮多次的意思
4
基礎的正則表達式
RE字元
意義
^word
查找行首為word的行
word$
查找結尾為word的行
.
代表一定有一個任意的字元
*
重復前一個字元0個到無窮多個
[list]
從字元集合裡面選擇一個字元
[n1-n2]
從要選擇的范圍裡面選擇一個字元
[^list]
從不是這個字元集合裡面找出一個字元
/{n,m/}
連續n到m個的前一個字元,/{n/}則是連續n個前一個字元,/{n,/}則是聯系n到無窮多個前一個字元

sed
工具
1
sed本省是一個管道命令,可以分析標轉輸入,而且sed還可以將數據進行替換,刪除,新增,選取特定行等功能
2
sed的用法
sed
[-nefr]
[動作]
-n
使用安靜模式,在一般模式中,所有來自stdin的數據一般都會被列出到屏幕上,但是如果加上-n這個參數的話,則只有經過sed特殊處理的那一行才會被列出
-e
直接在命令模式上進行sed的動作編輯
-f
直接將sed的動作寫在一個文件內,-f
filename則可以執行filename內的sed動作
-r
sed的動作支持的是擴展正則表達式的語法
-i
直接修改文件的內容,而不是由屏幕輸出
3
動作說明
n1,n2
function
n1,n2不見得會存在,一般代表的是進行的動作的行數
function有下面這些參數
a:
新增,a的後面可以接字元串,而這些字元串會在新的一行出現,目前的下一行
c:
替換,c的後面可以接字元串,這些字元串可以替換n1,n2之間的行
d:
刪除,因為是刪除,所以d後面通常不接任何參數
i:
插入,i的後面可以接字元串,而這些字元串會在新的一行,目前的上一行
p:
列印,也就是將某個選擇的數據列印出來
s:
替換,可以直接進行替換的工作

文件的格式化以及相關處理
1
格式化列印
printf
'列印內容『
實際內容
關於C程序語言內,常見的變數格式
%ns
那個n是數字,s代表的是string
%nd
那個n是數字,d代表的是整數
%N.nf
那個n與N都是數字,f代表浮點數
2
文件比較工具diff
diff就是用在比較兩個文件之間的區別,並且是行為單位來比較的,一般是用在ASCLL純文本文件的比較上
diff的用法
diff
[-bBi]
from_file
to_file
-b
忽略一行當中僅有多個空白的區別
-B
忽略空白行的區別
-i
忽略大小寫的不同
3
如果我們要將舊的文件升級成為新的文件時,我們可以先利用diff比較出文件的區別,並將區別文件製作成為補丁文件,再由補丁文件更新舊文件即可。
一般來說我們使用diff製作出來的比較文件通常擴展名為.patch
更新:patch
-pN
<
patch_file
還原:patch
-R
-pN
<
patch_file

❷ 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個字元,代表所有字元

❸ 4-19 Linux中的正則表達式 --- 字元匹配

1、正則表達式和通配符有點像。區別在於通配符匹配的是文件名和目錄名中的字元串,不能匹配文本中內容的字元串。而正則表達式匹配的是文本中的字元串。

2、正則表達式(REGEXP):由一類特殊字元及文本符號所編寫的表達式,這種表達式的功能是匹配文本當中字元串。

3、正則表達式的特點:可以通過特殊字元及文本符號靈活組合各種過濾條件去匹配文本內容,從而達到自由度頗高的篩查方式。

4、正則表達式分兩類:基本正則表達式(BRE)、擴展正則表達式(ERE),grep 加上 -E 參數就是使用 egrep。

5、元字元分類:元字元是指正則表達式中使用的特殊字元,這些特殊符號具有特定的功能。從功能上分類有:字元匹配、匹配次數、位置錨定、分組。

①、 .:匹配任意單個字元。

②、 [ ]:匹配指定范圍內的任意單個字元。

③、 [^]:排除匹配指定范圍內的任意單個字元。

④、 [:alnum:]:過濾字母和數字,包含了大寫字母、小寫字母 和 10個數字(0-9)。

⑤、 [:alpha:]:任何英文大小寫字元,即 A-Z,a-z。

⑥、 [:lower:]:只過濾小寫字母。

⑦、 [:upper:]:只過濾大寫字母。

⑧、 [:blank:]:空白字元(空格和製表符)。

⑨、 [:space:]:水平和垂直的空白字元(比 [:blank:] 包含的范圍廣)。

⑩-①、 [:digit:]:十進制數字。

⑩-③、 [:graph:]:可列印的非空白字元。

⑩-④、 [:print:]:可列印字元。相當於 [:alnum:]、[:punct:] 和 space。

⑩-⑤、 [:punct:]:標點符號。

❹ 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文件許可權及正則表達式的應用

1、顯示/etc目錄下,以非字母開頭,後面跟了一個字母以及其它任意長度任意字元的文件或目錄

2、復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。

3、將/etc/issue文件中的內容轉換為大寫後保存至/tmp/issue.out文件中

4、用戶和組

5、創建用戶user1、user2、user3。在/data/下創建目錄test

❻ 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匹配

示例文件內容為:

[email protected]

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||正則表達式及grep命令

以下內容首發自公眾號「小汪Waud」。

本期介紹在Linux環境下的正則表達式及grep命令。

正則表達式(Regular Expression)是對字元串操作的一種邏輯公式,就是用事先定義好的一些特定字元及這些字元的特定組合,組成一個「規則字元串」,這個字元串用來表達對字元串的一種過濾邏輯。

正則表達式基本上是一種表示法,只要程序支持這種表示法,該程序就可以用來作為正則表達式的字元串處理之用。如vi、grep、awk、sed等程序支持正則表達式,所以可以使用正則表達式的特殊字元來進行字元串的處理。但例如cp、ls等命令並不支持正則表達式,所以只能用自己的通配符。

正則表達式依照 不同的嚴謹度 分為:基礎正則表達式和擴展正則表達式。

注意!

grep是一種強大的文本搜索工具,可以使用 正則表達式匹配模式 查找文件里符合條件的字元串,並列印出來。

有點類似於WORD里的查找功能。

grep支持三種正則表達式語法:Basic、Extended和perl兼容。 如果沒有提供正則表達式類型,grep將搜索模式解釋為基本的正則表達式。要將模式解釋為擴展正則表達式,請使用-E。

查看grep的幫助文檔,如下

基本用法

grep [OPTION]... PATTERN [FILE]...

高級用法

grep [-A] [-B] [--color=auto] "查找字元" [模式] [文件]

常用參數

首先通過cat命令查看samples.txt的內容,如下圖

如果想檢索以K為行首的行,通過以下命令即可得到

如果想檢索以Z為行尾的行,通過以下命令即可得到

如果想檢索三個字元其中前面為K,後面為D中間字元,為任意字元,通過以下命令即可得到

參考資料

https://www.runoob.com/linux/linux-comm-grep.html

https://www.bilibili.com/video/BV1Yy4y117SX?p=12

❽ Linux正則表達式教程:Grep Regex示例

正則表達式是特殊字元,可幫助搜索數據,匹配復雜模式。正則表達式縮寫為「regexp」或「regex」。

為了便於理解,讓我們逐一學習不同類型的正則表達式。

[TOC]

一些常用的正則表達式命令是tr,sed,vi和grep。下面列出了一些基本的正則表達式。

我們來看一個例子吧。

執行cat示例以查看現有文件的內容

搜索包含字母'a'的內容。

' ^ '匹配字元串的開頭。讓我們搜索一下STARTS的內容

僅過濾以字元開頭的行。將忽略開頭不包含字元「a」的行。

讓我們看看另一個例子 -

僅選擇那些以 $ 結尾的行

這些表達式告訴我們字元串中字元的出現次數。他們是

例:

過濾掉包含字元'p'的所有行

我們想要檢查字元'p'是否在字元串中依次出現2次。為此,語法將是:

注意:您需要使用這些正則表達式添加-E。

這些正則表達式包含多個表達式的組合。他們之中有一些是:

例:

搜索所有字元't'

假設我們要過濾字元'a'在字元't'之前的行

我們可以使用命令

大括弧擴展的語法是花括弧「{}」內的序列或逗號分隔的項目列表。序列中的起始和結束項由兩個句點「..」分隔。

一些例子:

在上面的示例中,echo命令使用大括弧擴展創建字元串。

❾ Linux命令詳解之正則表達式


特殊字元
^
行首
$
行尾
.
任意一個字元
[]
內含字元范圍,加^表示反向字元范圍,在該范圍內任何一個字元都可以匹配
(若要恢復普通用法,可在其前加轉義字元/)
[:alnum:]
字母與數字字元
[:alpha:]
字母
[:ascii:]
ascii字元
[:blank:]
空格或製表符
[:cntrl:]
ascii控制字元
[:digit:]
數字
[:graph:]
非控制、非空格字元
[:lower:]
小寫字母
[:print:]
可列印字元
[:punct:]
標點符號字元
[:space:]
空白字元,包括垂直製表符
[:upper:]
大寫字母
[:xdigit:]
十六進制數字
其他字元
?
至多匹配一次
*
必須匹配0次或多次
+
必須匹配1次或多次
{n}
必須匹配n次
{n,}
必須匹配n次或n次以上
{n,m}
必須匹配在n到m次之間,包括n和m
示例
查找當前目錄下所有以一位數字命名且以.txt結尾的文件,並進行顯示
find
.-name
[[:digit:]]/.txt
-ok
ls
-l
{}
/;
查找所有以.txt結尾的文件並顯示
find
.
-name[[:alnum:]]*/.txt
-ok
ls
-l
{}
/;

熱點內容
平板如何關掉appstore密碼 發布:2025-07-08 00:59:17 瀏覽:404
安卓版軒轅劍劍之源哪裡下載 發布:2025-07-08 00:55:06 瀏覽:675
安卓的軟體怎麼關閉 發布:2025-07-08 00:53:38 瀏覽:777
html5整站源碼 發布:2025-07-08 00:36:01 瀏覽:943
sql創建鏈接 發布:2025-07-08 00:08:38 瀏覽:398
ftp上傳中斷 發布:2025-07-08 00:08:37 瀏覽:641
linux雲計算課程 發布:2025-07-08 00:07:23 瀏覽:23
安卓網易雲怎麼發布歌曲 發布:2025-07-07 23:42:29 瀏覽:626
安卓內存讀取腳本 發布:2025-07-07 23:42:19 瀏覽:872
python27漢化 發布:2025-07-07 23:42:18 瀏覽:722