第4.1節:使用正則表達式

1 第4.1節:使用正則表達式

??將正則表達式用斜杠括起來,就能用作模式。隨后,該正則表達式會與每條輸入記錄的完整文本進行比對。(通常情況下,它只需匹配文本的部分內容就能視作匹配成功。)例如,以下代碼會打印出mail-list文件中,任意位置出現字符串li的記錄的第二個字段:

$ awk '/li/ { print $2 }' mail-list

執行結果:

555-5553
555-0542
555-6699
555-3430

??正則表達式也能用于匹配表達式中。這些表達式允許你指定要匹配的字符串,該字符串不必是當前輸入記錄的全部內容。~!~這兩個操作符用于執行正則表達式的比較操作。使用這些操作符的表達式,既可以用作模式,也能在ifwhilefordo語句中使用(詳見第7.4節 “動作中的控制語句”)。例如,對于以下表達式,如果exp(作為字符串看待)與regexp匹配,則表達式的值為真:

exp ~ /regexp/

??下面的示例會匹配(篩選出)所有第一個字段中含有大寫字母J的輸入記錄:

$ awk '$1 ~ /J/' inventory-shipped

執行結果:

Jan 13 25 15 115
Jun 31 42 75 492
Jul 24 34 67 436
Jan 21 36 64 620

下面這段代碼也能實現相同的功能:

awk '{ if ($1 ~ /J/) print }' inventory-shipped

再看下面這個例子,如果exp(作為字符串看待)與regexp不匹配,那么表達式的值為真:

exp !~ /regexp/

下面的示例會匹配(篩選出)所有第一個字段中不包含大寫字母J的輸入記錄:

$ awk '$1 !~ /J/' inventory-shipped

執行結果:

Feb 15 32 24 226
Mar 15 24 34 228
Apr 31 52 63 420
May 16 34 29 208

當一個正則表達式被包含在斜杠中,如/foo/,我們稱其為正則表達式常量,這與5.27是數值常量、"foo"是字符串常量的概念類似。


作者聲明:本文用于記錄和分享作者的學習心得,可能有部分文字或示例來自AI平臺,如:豆包、DeepSeek(硅基流動)(注冊鏈接)等,由于本人水平有限,難免存在表達錯誤,歡迎留言交流和指教!
Copyright ? 2022~2025 All rights reserved.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/899371.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/899371.shtml
英文地址,請注明出處:http://en.pswp.cn/news/899371.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java 代理(一) 靜態代理

學習代理的設計模式的時候,經常碰到的一個經典場景就是想統計某個方法的執行時間。 1 靜態代理模式的產生 需求1. 統計方法執行時間 統計方法執行時間,在很多API/性能監控中都有這個需求。 下面以簡單的計算器為例子,計算加法耗時。代碼如下…

每日總結3.28

藍橋刷題 3227 找到最多的數 方法一&#xff1a;摩爾投票法 #include <bits/stdc.h> using namespace std; #define int long long signed main() { int n,m; cin>>n>>m; int a[m*n]; for(int i0;i<n*m;i) { cin>>a[i]; } int cand…

Flutter快速搭建聊天

之前項目中使用的環信聊天&#xff0c;我們的App使用的Flutter開發的 。 所以&#xff0c;就使用的 em_chat_uikit &#xff0c;這個是環信開發的Flutter版本的聊天。 一開始&#xff0c;我們也用的環信的聊天&#xff0c;是收費的&#xff0c;但是&#xff0c;后面就發現&…

Sa-Token

簡介 Sa-Token 是一個輕量級 Java 權限認證框架&#xff0c;主要解決&#xff1a;登錄認證、權限認證、單點登錄、OAuth2.0、分布式Session會話、微服務網關鑒權 等一系列權限相關問題。 官方文檔 常見功能 登錄認證 本框架 用戶提交 name password 參數&#xff0c;調用登…

基于javaweb的SSM航班機票預訂平臺系統設計與實現(源碼+文檔+部署講解)

技術范圍&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、小程序、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容&#xff1a;免費功能設計、開題報告、任務書、中期檢查PPT、系統功能實現、代碼編寫、論文編寫和輔導、論…

格雷碼、漢明碼,CRC校驗的區別

格雷碼、漢明碼和CRC校驗都是用于數據傳輸和存儲中的編碼技術。 它們在原理、功能和應用場景上存在顯著區別。 1.格雷碼&#xff08;Gray Code&#xff09; ? 定義&#xff1a;格雷碼是一種特殊的二進制編碼&#xff0c;任意兩個相鄰的碼字之間僅有一位不同。 ? 功能&#x…

【報錯】 /root/anaconda3/conda.exe: cannot execute binary file: Exec format error

背景: 安裝Anaconda3 bash Anaconda3-****-Linux-x86_64.sh 報錯: /root/anaconda3/conda.exe: cannot execute binary file: Exec format error 原因分析: 安裝包(如

JAVA實現動態IP黑名單過濾

一些惡意用戶(可能是黑客、爬蟲、DDoS 攻擊者)可能頻繁請求服務器資源&#xff0c;導致資源占用過高。因此需要一定的手段實時阻止可疑或惡意的用戶&#xff0c;減少攻擊風險。 通過 IP 封禁&#xff0c;可以有效拉黑攻擊者&#xff0c;防止資源被濫用&#xff0c;保障合法用戶…

開源的CMS建站系統可以隨便用嗎?有什么需要注意的?

開源CMS建站系統雖然具有許多優點&#xff0c;但并非完全“隨便用”。無論選哪個CMS系統&#xff0c;大家在使用的時候&#xff0c;可以盡可能地多注意以下幾點&#xff1a; 1、版權問題 了解開源許可證&#xff1a;不同的開源CMS系統采用不同的開源許可證&#xff0c;如GPL、…

故障識別 | 基于改進螂優化算法(MSADBO)優化變分模態提取(VME)結合稀疏最大諧波噪聲比解卷積(SMHD)進行故障診斷識別,matlab代碼

基于改進螂優化算法&#xff08;MSADBO&#xff09;優化變分模態提取&#xff08;VME&#xff09;結合稀疏最大諧波噪聲比解卷積&#xff08;SMHD&#xff09;進行故障診斷識別 一、引言 1.1 機械故障診斷的背景和意義 在工業生產的宏大畫卷中&#xff0c;機械設備的穩定運行…

探究 CSS 如何在HTML中工作

2025/3/28 向全棧工程師邁進&#xff01; 一、CSS的作用 簡單一句話——美化網頁 <p>Lets use:<span>Cascading</span><span>Style</span><span>Sheets</span> </p> 對于如上代碼來說&#xff0c;其顯示效果如下&#xff1…

硬件老化測試方案的設計誤區

硬件老化測試方案設計中的常見誤區主要包括測試周期不足、測試條件過于單一、樣品選擇不當等方面。其中&#xff0c;測試周期不足尤為突出&#xff0c;容易導致潛在缺陷未被完全暴露。老化測試本質上是通過加速產品老化來模擬長期使用狀況&#xff0c;因此測試周期不足會嚴重削…

無錫零碳園區“三年突圍”安科瑞源網荷儲充系統如何破解“綠電難、儲能貴、調度亂”困局?

零碳園區建設如火如荼&#xff0c;為何企業“不敢投、不會用”&#xff1f; 無錫市政府3月27日發布《零碳園區建設三年行動方案》&#xff0c;目標到2027年建成10家以上零碳園區、20家零碳工廠、10個源網荷儲一體化項目。但企業仍存疑慮&#xff1a; 綠電消納難&#xff1a;光…

docker torcherve打包mar包并部署模型

使用Docker打包深度網絡模型mar包到服務端 參考鏈接&#xff1a;Docker torchserve 部署模型流程——以WSL部署YOLO-FaceV2為例_class myhandler(basehandler): def initialize(self,-CSDN博客 1、docker拉取環境鏡像命令 docker images出現此提示為沒有權限取執行命令&…

Redis 分布式鎖實現深度解析

Redis 分布式鎖是分布式系統中協調多進程/服務對共享資源訪問的核心機制。以下從基礎概念到高級實現進行全面剖析。 一、基礎實現原理 1. 最簡實現&#xff08;SETNX 命令&#xff09; # 加鎖 SET resource_name my_random_value NX PX 30000# 解鎖&#xff08;Lua腳本保證原…

kubernetes》》k8s》》 kubeadm、kubectl、kubelet

kubeadm 、kubectl 、kubelet kubeadm、kubectl和kubelet是Kubernetes中不可或缺的三個組件。kubeadm負責集群的快速構建和初始化&#xff0c;為后續的容器部署和管理提供基礎&#xff1b;kubectl作為命令行工具&#xff0c;提供了與Kubernetes集群交互的便捷方式&#xff1b;而…

linux 硬盤擴展

場景&#xff1a; [rootlocalhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 40G 0 disk ├─sda1 8:1 0 1M 0 part ├─sda2 8:2 0 1G 0 part /boot └─sda3 …

Docker Desktop 界面功能介紹

Docker Desktop 界面功能介紹 左側導航欄 Containers(容器): 用于管理容器,包括查看運行中或已停止的容器,檢查容器狀態、日志,執行容器內命令,啟動、停止、刪除容器等操作。Images(鏡像): 管理本地 Docker 鏡像,可查看鏡像列表、從 Docker Hub 拉取新鏡像、刪除鏡…

C++細節知識for面試

1. linux上C程序可用的棧和堆大小分別是多少&#xff0c;為什么棧大小小于堆&#xff1f; 1. 棧&#xff08;Stack&#xff09;大小 棧默認為8MB&#xff0c;可修改。 為什么是這個大小&#xff1a; ?安全性&#xff1a;限制棧大小可防止無限遞歸或過深的函數調用導致內存…

數據設計(范式、步驟)

文章目錄 數據設計1.數據庫設計的三大范式2、數據庫設計的具體步驟 數據設計 1.數據庫設計的三大范式 關系型數據庫的三大范式&#xff0c;指導如何設計一個關系型數據庫。 1NF&#xff1a; 關系表的每個字段&#xff0c;都應該是不可再分的&#xff0c;——保證原子性。 字…