最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Bash?Shell通配符與正則表達式實用示例詳解

 更新時間:2025年10月24日 09:32:13   作者:韓公子的Linux大集市  
正則表達式是一種可以用于模式匹配和替換的工具,通過正則表達式,Shell可以使用一系列的特殊字符構建匹配模式,然后將匹配模式與待比較字符串或文件進行比較,這篇文章主要介紹了Bash?Shell通配符與正則表達式的相關資料,需要的朋友可以參考下

一、通配符 (Wildcards)

通配符是Shell用于文件名擴展的特殊字符,主要用于匹配文件和目錄名。

基礎通配符

通配符名稱功能描述示例
*星號匹配任意數量任意字符ls *.txt
?問號匹配單個任意字符ls file?.txt
[]字符集匹配括號內任意一個字符ls [abc]*.txt
[!]否定字符集匹配不在括號內的任意一個字符ls [!a]*.txt
{}花括號擴展生成多個可能組合touch file{1,2,3}.txt

高級通配符 (extglob)

啟用擴展通配符:

shopt -s extglob
模式功能描述示例
?(pattern)匹配0次或1次給定模式ls ?(.txt)
*(pattern)匹配0次或多次給定模式ls *(backup)
+(pattern)匹配1次或多次給定模式ls +(log)
@(pattern)匹配給定模式之一`ls @(jpg
!(pattern)匹配除給定模式外的任何內容ls !(*.bak)

二、正則表達式 (Regular Expressions)

正則表達式用于文本匹配和處理,比通配符更強大靈活。

基礎正則表達式 (BRE)

元字符功能描述示例
.匹配任意單個字符grep 'f.le' file.txt
*匹配前一個字符0次或多次grep 'go*d' file.txt
^匹配行首grep '^start' file.txt
$匹配行尾grep 'end$' file.txt
[]匹配字符集中的任意一個字符grep '[aeiou]' file.txt
[^]匹配不在字符集中的任意字符grep '[^0-9]' file.txt
\轉義特殊字符grep '\.' file.txt

擴展正則表達式 (ERE)

啟用擴展正則表達式:

grep -E 或 egrep
元字符功能描述示例
+匹配前一個字符1次或多次grep -E 'go+d' file.txt
?匹配前一個字符0次或1次grep -E 'colou?r' file.txt
``或操作,匹配多個模式之一
()分組grep -E '(abc)+' file.txt
{}指定匹配次數grep -E 'a{3}' file.txt

POSIX字符類

字符類等價于描述
[:alnum:][a-zA-Z0-9]字母和數字
[:alpha:][a-zA-Z]字母
[:digit:][0-9]數字
[:lower:][a-z]小寫字母
[:upper:][A-Z]大寫字母
[:space:][ \t\r\n\v\f]空白字符
[:punct:][!-/:-@[-{-~]`標點符號

三、通配符與正則表達式對比

特性通配符正則表達式
主要用途文件名匹配文本匹配
使用場景Shell命令參數grep/sed/awk等文本處理工具
* 的含義任意字符序列前一個字符的0次或多次重復
? 的含義任意單個字符前一個字符的0次或1次重復
[] 的作用匹配字符集匹配字符集
^ 的作用無特殊含義行首定位
$ 的作用無特殊含義行尾定位
`` 的作用無特殊含義
() 的作用無特殊含義分組

四、實用示例

1. 文件操作

# 刪除所有備份文件
rm *~

# 移動所有圖片文件
mv *.@(jpg|png|gif) images/

# 查找所有2023年的日志文件
ls *2023*.log

2. 文本處理

# 查找包含"error"或"warning"的行
grep -E 'error|warning' log.txt

# 提取所有郵箱地址
grep -E '\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b' file.txt

# 替換日期格式 (YYYY-MM-DD → DD/MM/YYYY)
sed -E 's/([0-9]{4})-([0-9]{2})-([0-9]{2})/\3\/\2\/\1/' dates.txt

3. 高級模式匹配

# 匹配有效的IP地址
grep -E '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' ips.txt

# 匹配有效的URL
grep -E '^(https?|ftp)://[^[:space:]]+' urls.txt

# 匹配信用卡號 (16位數字,4位一組)
grep -E '^([0-9]{4}-){3}[0-9]{4}$' cards.txt

五、性能優(yōu)化技巧

  1. 避免過度使用通配符

    # 不推薦
    rm *
    
    # 推薦 (更安全)
    rm -i *
    
  2. 使用更精確的匹配

    # 不推薦
    ls *log*
    
    # 推薦
    ls *.log
    
  3. 正則表達式預編譯

    # 對于重復使用的正則表達式
    pattern='^[A-Z][a-z]+$'
    grep "$pattern" names.txt
    
  4. 使用LC_ALL=C提高性能

    # 對于ASCII文本處理
    LC_ALL=C grep 'pattern' largefile.txt
    

六、常見問題解決

問題1:通配符不匹配

解決方案

# 檢查是否啟用了通配符
echo ~/*  # 應該顯示家目錄內容

# 檢查特殊字符轉義
ls file\*.txt

問題2:正則表達式匹配失敗

解決方案

# 使用grep -P (PCRE) 支持更復雜的正則
grep -P '\d{3}-\d{2}-\d{4}' ssn.txt

# 使用在線正則測試工具驗證

問題3:文件名包含特殊字符

解決方案

# 使用雙引號
rm "file with spaces.txt"

# 使用find命令
find . -name "*.txt" -exec rm {} \;

七、學習資源

  1. 交互式學習工具

    • https://regex101.com/ - 在線正則表達式測試和調試
    • https://regexr.com/ - 實時正則表達式學習工具
  2. 參考文檔

    • man 7 glob - Linux通配符文檔
    • man 7 regex - Linux正則表達式文檔
    • man grep - grep命令手冊
  3. 進階書籍

    • 《精通正則表達式》- Jeffrey E.F. Friedl
    • 《Linux命令行與Shell腳本編程大全》- Richard Blum

通過掌握通配符和正則表達式,您可以大幅提高在Linux命令行環(huán)境中的工作效率和文本處理能力。建議從基礎開始練習,逐步掌握更復雜的模式匹配技巧。

到此這篇關于Bash Shell通配符與正則表達式的文章就介紹到這了,更多相關Bash Shell通配符與正則表達式內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • linux上搭建solr的實現方法(用jetty部署)

    linux上搭建solr的實現方法(用jetty部署)

    下面小編就為大家分享一篇linux上搭建solr的實現方法(用jetty部署),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • 使用shc工具加密shell腳本詳解

    使用shc工具加密shell腳本詳解

    這篇文章主要介紹了使用shc工具加密shell腳本詳解,Shc可以用來對shell腳本進行加密,可以將shell腳本轉換為一個可執(zhí)行的二進制文件,需要的朋友可以參考下
    2014-12-12
  • php在linux中可能用到的命令(推薦)

    php在linux中可能用到的命令(推薦)

    下面小編就為大家?guī)硪黄猵hp在linux中可能用到的命令(推薦)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • centos中mysql備份數據庫腳本分享

    centos中mysql備份數據庫腳本分享

    這篇文章主要介紹了centos中mysql備份數據庫腳本,可以做成mysql自動備份工具,管理網站一定會用的到,需要的朋友可以參考下
    2014-03-03
  • Shell中${}的多種用法小結

    Shell中${}的多種用法小結

    ${}是一種變量替換語法,它用于獲取和操作變量的值,本文就來介紹一下${}的多種用法,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • Shell實現的一些數學運算自定義函數分享

    Shell實現的一些數學運算自定義函數分享

    這篇文章主要介紹了Shell實現的一些數學運算自定義函數分享,本文的一些函數主要重寫了加減乘除算法,需要的朋友可以參考下
    2014-12-12
  • Linux下的自動化構建工具之make/makefile的用法詳解

    Linux下的自動化構建工具之make/makefile的用法詳解

    這篇文章主要為大家詳細介紹了Linux下的自動化構建工具之make/makefile的區(qū)別與使用,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2022-10-10
  • Shell腳本之文件批量創(chuàng)建與修改的簡單方法

    Shell腳本之文件批量創(chuàng)建與修改的簡單方法

    有時需要將文件內容進行修改,如果文件數量不多可以一個一個修改,那么如果文件數量很多一個一個修改很麻煩,這篇文章主要給大家介紹了關于Shell腳本之文件批量創(chuàng)建與修改的相關資料,需要的朋友可以參考下
    2021-06-06
  • Git代碼提交流程及git命令匯總(基礎篇)

    Git代碼提交流程及git命令匯總(基礎篇)

    git 現在的火爆程度非同一般,它被廣泛地用在大型開源項目,團隊開發(fā),以及獨立開發(fā)者,甚至學生之中。這篇文章給大家介紹一些Git代碼提交流程和Git基礎命令的使用,需要的朋友參考下吧
    2017-12-12
  • shell grep 查找進程的小技巧

    shell grep 查找進程的小技巧

    大部分人在寫Shell 過濾進程的時候 都會使用 grep 在 ps aux 的輸出結果中查找指定的進程,但此時也會把 grep 進程也顯示出來
    2013-01-01

最新評論

荥经县| 沾化县| 德钦县| 襄汾县| 呼和浩特市| 天峻县| 佛冈县| 华池县| 南雄市| 兴城市| 绵竹市| 沿河| 龙泉市| 延川县| 育儿| 胶南市| 连州市| 合水县| 金川县| 上思县| 德昌县| 韶山市| 广东省| 江西省| 抚顺市| 河北省| 同心县| 罗田县| 朝阳市| 富蕴县| 云阳县| 郓城县| 焉耆| 株洲县| 朝阳县| 蓝田县| 蓬安县| 南投县| 芜湖市| 保定市| 迁安市|