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

shell正則表達(dá)式智能匹配、grep智慧過濾工具、sed基本用法、sed基本操作指令實(shí)例代碼

 更新時(shí)間:2026年03月08日 09:31:07   作者:silver90239  
正則表達(dá)式用來在文件中匹配符合條件的字符串,正則是包含匹配,grep、awk、sed等命令可以支持正則表達(dá)式,這篇文章主要介紹了shell正則表達(dá)式智能匹配、grep智慧過濾工具、sed基本用法、sed基本操作指令的相關(guān)資料,需要的朋友可以參考下

以下是 Shell 中正則表達(dá)式、grep 高級過濾、sed 基礎(chǔ)與核心操作 的完整技術(shù)指南,內(nèi)容系統(tǒng)、實(shí)用,適用于日志分析、文本處理、自動化腳本開發(fā)等場景。

一、Shell 正則表達(dá)式(Regex)智能匹配

?? 注意:Bash 本身不直接支持完整正則,但可通過 [[ ]]、grepsed、awk 等工具使用。

1.基本元字符

符號含義示例
.匹配任意單個(gè)字符a.c → abc, a2c
*匹配前一個(gè)字符 0 次或多次ab*c → ac, abc, abbc
+匹配前一個(gè)字符 1 次或多次(需 -Eegrepab+c → abc, abbc(不含 ac)
?匹配前一個(gè)字符 0 次或 1 次colou?r → color, colour
^行首錨定^root → 以 root 開頭的行
$行尾錨定bash$ → 以 bash 結(jié)尾的行
\b單詞邊界(在 grep -Psed -r 中可用)\bword\b → 精確匹配單詞

2.字符集合與范圍

表達(dá)式含義
[abc]匹配 a、b 或 c
[a-z]匹配任意小寫字母
[^0-9]匹配非數(shù)字字符
[[:digit:]]等價(jià)于 [0-9](POSIX 標(biāo)準(zhǔn))
[[:alpha:]]字母(大小寫)
[[:alnum:]]字母 + 數(shù)字
[[:space:]]空白字符(空格、制表符等)

3.分組與引用(擴(kuò)展正則)

表達(dá)式含義
(abc)分組,可配合 `
`a(bc)d`
\1, \2反向引用(在 sed 中常用)

? 啟用擴(kuò)展正則

  • grep -Eegrep
  • sed -r(GNU sed)或 sed -E(macOS)

二、grep智慧過濾工具(文本搜索之王)

1.基礎(chǔ)語法

grep [選項(xiàng)] '模式' 文件

2.常用選項(xiàng)

選項(xiàng)作用示例
-i忽略大小寫grep -i "error" log.txt
-v反向匹配(顯示不匹配的行)grep -v "^#" config.conf(過濾注釋)
-n顯示行號grep -n "fail" syslog
-r / -R遞歸搜索目錄grep -r "password" /etc/
-l僅顯示匹配文件名grep -l "TODO" *.sh
-A N顯示匹配行及后 N 行grep -A 2 "ERROR" app.log
-B N顯示匹配行及前 N 行grep -B 1 "Exception" app.log
-C N顯示上下文 N 行grep -C 1 "timeout" app.log
-E使用擴(kuò)展正則(推薦)`grep -E "error
-o僅輸出匹配部分grep -o "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" access.log(提取 IP)

3.智慧過濾實(shí)戰(zhàn)示例

? 提取所有 IPv4 地址

grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" access.log 

? 過濾有效日志(排除空行和注釋)

grep -vE "^\s*$|^#" nginx.conf 

? 統(tǒng)計(jì)錯誤次數(shù)

grep -i "error" app.log | wc -l 

? 查找包含多個(gè)關(guān)鍵詞的行

grep -E "login.*failed|authentication error" auth.log 

三、sed基本用法與核心操作指令

sed = Stream Editor,逐行處理文本流,常用于替換、刪除、插入、提取。

1.基本語法

sed [選項(xiàng)] '命令' 文件
# 或
cat file | sed '命令'

2.常用選項(xiàng)

選項(xiàng)作用
-n抑制默認(rèn)輸出(配合 p 打印)
-i直接修改原文件(慎用!建議先備份)
-e多命令(如 sed -e 's/a/b/' -e 's/c/d/'
-r / -E啟用擴(kuò)展正則(GNU sed 用 -r,macOS 用 -E

3. 四大核心操作指令

(1) 替換(s///)——最常用!

# 基本格式:s/舊/新/[標(biāo)志]
sed 's/foo/bar/' file        # 替換每行第一個(gè) foo
sed 's/foo/bar/g' file       # 全局替換(g = global)
sed 's/foo/bar/2g' file      # 從第2個(gè)開始全局替換
sed -i 's/old/new/g' file    # 直接修改文件

特殊符號

  • &:代表匹配到的整個(gè)字符串
    echo "123" | sed 's/[0-9]*/(&)/'  # 輸出 (123)
    
  • \1\2:反向引用分組
    echo "John,Doe" | sed 's/\([^,]*\),\(.*\)/\2 \1/'  # 輸出 Doe John
    

(2) 刪除(d)

sed '2d' file          # 刪除第2行
sed '1,5d' file        # 刪除1-5行
sed '/error/d' file    # 刪除包含 error 的行
sed '/^$/d' file       # 刪除空行

(3) 打?。╬)——配合 -n 使用

sed -n '2p' file       # 僅打印第2行
sed -n '/success/p' file  # 打印含 success 的行

(4) 追加/插入(a/i)

sed '2a\NEW LINE' file     # 在第2行后追加
sed '2i\NEW LINE' file     # 在第2行前插入

4. sed 實(shí)戰(zhàn)示例

? 批量替換配置項(xiàng)

sed -i 's/^#Port 22/Port 2222/' /etc/ssh/sshd_config

? 提取特定字段(類似 cut)

# 提取 /etc/passwd 中用戶名(第一列)
sed 's/:.*//' /etc/passwd

? 刪除 HTML 標(biāo)簽

sed 's/<[^>]*>//g' webpage.html

? 格式化日期(YYYY-MM-DD → DD/MM/YYYY)

echo "2025-12-18" | sed 's/\([0-9]\{4\}\)-\([0-9]\{2\}\)-\([0-9]\{2\}\)/\3\/\2\/\1/'
# 輸出:18/12/2025

四、組合使用:grep + sed 強(qiáng)大聯(lián)動

# 從日志中提取錯誤IP并去重
grep "Failed password" /var/log/auth.log | \
  grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | \
  sort | uniq -c | sort -nr
# 修改所有 .sh 文件中的解釋器路徑
sed -i '1s|^#!/bin/sh$|#!/bin/bash|' *.sh

關(guān)鍵總結(jié)表

工具核心用途推薦用法
正則模式匹配基礎(chǔ)用 -E 啟用擴(kuò)展正則
grep查找匹配行grep -E -v -n -r 組合使用
sed編輯文本流s///g 替換、d 刪除、-i 謹(jǐn)慎使用

?? 黃金法則

  • grep 用于“找”sed 用于“改”;
  • 先用 grep 篩選,再用 sed 處理;
  • 修改文件前務(wù)必 備份 或先 不加 -i 預(yù)覽!

到此這篇關(guān)于shell正則表達(dá)式智能匹配、grep智慧過濾工具、sed基本用法、sed基本操作指令的文章就介紹到這了,更多相關(guān)shell正則表達(dá)式操作指令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Linux基礎(chǔ)命令日常積累

    Linux基礎(chǔ)命令日常積累

    Linux命令雖然用處很多,用過這么多次但是對其步驟、命令還是不記得,每次還是要到處找資料,下面小編把本次linux生產(chǎn)環(huán)境搭建分享在腳本之家平臺,供大家參考
    2015-10-10
  • Linux中查看服務(wù)器內(nèi)存/CPU/網(wǎng)絡(luò)占用情況的命令

    Linux中查看服務(wù)器內(nèi)存/CPU/網(wǎng)絡(luò)占用情況的命令

    這篇文章主要為大家整理了一些Linux中查看服務(wù)器內(nèi)存、CPU和網(wǎng)絡(luò)占用情況的命令,文中的示例代碼簡潔易懂,需要的小伙伴可以參考一下
    2023-08-08
  • 使用Bash Shell檢查文件是否存在的方法

    使用Bash Shell檢查文件是否存在的方法

    大多數(shù)情況下,可以使用測試命令來對條件進(jìn)行測試。比如可以比較字符串、判斷文件是否存在及是否可讀等等。下面這篇文章就主要介紹了使用Bash Shell檢查文件是否存在的方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • linux shell(.sh)腳本編寫和運(yùn)行入門

    linux shell(.sh)腳本編寫和運(yùn)行入門

    這篇文章主要介紹了linux shell(.sh)腳本編寫和運(yùn)行入門,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Linux Shell腳本批量創(chuàng)建用戶與設(shè)置密碼的方法

    Linux Shell腳本批量創(chuàng)建用戶與設(shè)置密碼的方法

    在現(xiàn)代 Linux 系統(tǒng)管理中,批量創(chuàng)建用戶并設(shè)置初始密碼是一項(xiàng)基礎(chǔ)而高頻的任務(wù),本文將深入探討如何通過 Shell 腳本實(shí)現(xiàn)這一目標(biāo),并結(jié)合 Java 示例代碼展示跨語言集成的可能性,最后提供完整的生產(chǎn)環(huán)境部署建議,需要的朋友可以參考下
    2026-03-03
  • Shell腳本read用法實(shí)現(xiàn)

    Shell腳本read用法實(shí)現(xiàn)

    本文主要介紹了Shell腳本read用法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • shell備份文件、重命名文件、刪除指定文件的3個(gè)腳本分享

    shell備份文件、重命名文件、刪除指定文件的3個(gè)腳本分享

    這篇文章主要介紹了shell備份文件、重命名文件、刪除指定文件的3個(gè)腳本分享,是學(xué)習(xí)shell時(shí)的練習(xí)腳本,shell新手朋友可以參考下哦
    2014-07-07
  • Linux命令ifconfig報(bào)錯command not found的解決方法

    Linux命令ifconfig報(bào)錯command not found的解決方法

    最近在安裝Vmware CentOS,輸入ifconfig查看VM的IP地址,提示command not found,發(fā)現(xiàn)沒安裝命令包,此篇文章記錄整個(gè)問題解決方法,有和小編遇到一樣的問題的小伙伴可以參考閱讀本文
    2023-08-08
  • 解決linux下openoffice word文件轉(zhuǎn)PDF中文亂碼的問題

    解決linux下openoffice word文件轉(zhuǎn)PDF中文亂碼的問題

    下面小編就為大家?guī)硪黄鉀Qlinux下openoffice word文件轉(zhuǎn)PDF中文亂碼的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11
  • linux Shell入門:掌握Linux,OS X,Unix的Shell環(huán)境

    linux Shell入門:掌握Linux,OS X,Unix的Shell環(huán)境

    這篇文章主要介紹了linux Shell入門:掌握Linux,OS X,Unix的Shell環(huán)境 ,需要的朋友可以參考下
    2015-04-04

最新評論

依安县| 达拉特旗| 天津市| 外汇| 化德县| 浦江县| 凉城县| 兰考县| 凌云县| 如东县| 余江县| 五原县| 青海省| 宿迁市| 思茅市| 墨脱县| 汝城县| 定日县| 香河县| 翁牛特旗| 顺平县| 靖西县| 潜山县| 广元市| 祥云县| 景德镇市| 永城市| 珲春市| 大洼县| 内乡县| 扶绥县| 白河县| 和政县| 太湖县| 绍兴县| 洛扎县| 白河县| 台东县| 兰州市| 辰溪县| 长宁区|