目錄
grep簡介
grep使用方式
擴充grep使用方式
grep正規表示式元字元
首頁 運維 linux運維 Linux中關於grep以及正規表示式的程式碼案例詳解

Linux中關於grep以及正規表示式的程式碼案例詳解

Jul 26, 2017 pm 04:03 PM
grep linux 正規則

grep簡介

  grep 是一種強大的文本搜尋工具,它能使用正規表示式搜尋文本,並列印符合的行。通常grep有三個版本grep、egrep(等同於grep -E)和fgrep。 egrep為擴充的grep,fgrep則為快速grep(固定的字串來對文字進行搜索,不支援正規表示式的引用但是查詢極為快速)。 grep是Linux文字處理三劍客之一。

grep使用方式

  使用方式:grep [OPTIONS] PATTERN [FILE...]

  grep [OPTIONS] [-e PATTERN | -f FILE] [FILE ...]

  常用選項:

  --color=auto:對匹配到的文字著色後進行高亮顯示;

   -i:忽略字元的大小寫入

  -o:僅顯示符合的字串

  -v:顯示不能被模式匹配到的行

  -E:支援使用擴充的正規表示式

  -q:靜默模式,即不輸出任何訊息

  -A #:顯示被模式匹配的行及其後#行

  -B #:顯示被模式匹配的行及其前#行

  -C #:顯示被模式匹配的行及其前後各#行

  :使用grep匹配時需使用雙引號引起來(單引號為強引用),防止被系統誤認為參數或特殊指令而報錯。

擴充grep使用方式

  使用方式:egrep [OPTIONS] PATTERN [FILE...] 

  grep -E [OPTIONS ] PATTERN [FILE...]

  -i:忽略字元的大小寫
  -o:僅顯示匹配到的字串本身
  -v:顯示不被模式匹配到的行
  -q:靜默模式,即不輸出任何訊息
  -A #:顯示被模式匹配的行及其後#行
  -B #:顯示被模式匹配的行及其前#行
  -C #:顯示被模式匹配的行及其前後各#行
  -G:支援基本正規表示式

grep正規表示式元字元

#  '^': 錨定行首

  '$': 錨定行尾 

  '.': 符合任一字元

  '*': 匹配零個或多個先前字元 

  '\?':符合其前面的字元0次或1次;

  '\+':符合其前面的字元1次或多次;

  '\{m\}':匹配其前面的字元m次(\為轉義字元)

  '\{m,n\}':符合其前面的字符至少m次,至多n次

  '[]': 匹配一個指定範圍內的字元| '[^]'符合指定範圍外的任意單一字元

  '\<'或'\b':錨定詞首,'\>'或'\b':錨定詞尾(可用\:匹配完整單字)

  '\(\) ':將多個字元當做一個整體進行處理

  後向引用:引用前面的分組括號中的模式所匹配到的字元

##  分組括號中的模式符合的內容或被正規表示式引擎自動記錄於內部的變數:

  \1:模式從左側起,第一個左括號及與之匹配的右括號之間模式匹配到的內容

  \2:模式從左側起,第二個左括號及與之匹配的右括號之間模式匹配到的內容...

  擴充正規表示式與正規表示式略有不同:

  '[]':依舊符合指定範圍內的任意單一字元;但是有很多特殊匹配方式。

    [:digit:] 符合任一單一數字

    [:lower:] 符合任單一小寫字母

           符合任意單一小寫字母          符合單一大寫字母

    [:alpha:] 符合任一字母

    [:alnum:] 符合任意單一字母或數字

    [

    [:space:] 匹配單一空格

  一些地方取消了轉義字元的使用:

  '?':符合其前面的字元0次或1次;

  '+':符合其前面的字元1次或多次;

  '{m}':符合其前面的字元m次(\為轉義字元)

  '{m,n}':符合其前面的字元至少m次,至多n次

  ():將一個或多個字元捆綁在一起,當做一個整體進行處理,反向引用照常使用。

  '|':或(

:'C|cat'為C與cat,'(C|c)at是Cat與cat')

#練習題:

  1、列出目前系統上所有已登入的使用者的使用者名,注意:同一個使用者登入多次,則只顯示一次

[root@localhost ~]# who | cut -d&#39; &#39; -f1|uniqroot
登入後複製

  2、取出最後登入目前系統的使用者的相關資訊

[root@localhost ~]# id `last | head -1 | cut -d&#39; &#39; -f1`
uid=0(root) gid=0(root) groups=0(root)
登入後複製

  3.取出目前系統上被使用者當做其預設shell最多的那個shell

[root@localhost ~]# cut -d&#39;:&#39; -f7 /etc/passwd|uniq -c|sort -n|tail -1|cut -d&#39; &#39; -f7/sbin/nologin
登入後複製

  4.将/etc/passd中的第三个字段设置最大的后10个用户的信息全部改为大写保存至/tmp/maxuser.txt文件中


[root@localhost ~]# sort -t&#39;:&#39; -k3 -n /etc/passwd|tail -10|tr &#39;a-z&#39; &#39;A-Z&#39; >/tmp/maxusers.txt
[root@localhost ~]# cat /tmp/maxusers.txt 
NOBODY:X:99:99:NOBODY:/:/SBIN/NOLOGIN
SYSTEMD-NETWORK:X:192:192:SYSTEMD NETWORK MANAGEMENT:/:/SBIN/NOLOGIN
NGINX:X:996:994:NGINX WEB SERVER:/VAR/LIB/NGINX:/SBIN/NOLOGIN
CHRONY:X:997:995::/VAR/LIB/CHRONY:/SBIN/NOLOGIN
POLKITD:X:998:996:USER FOR POLKITD:/:/SBIN/NOLOGIN
SYSTEMD-BUS-PROXY:X:999:997:SYSTEMD BUS PROXY:/:/SBIN/NOLOGIN
DINGJIE:X:1000:1000:DINGJIE:/HOME/DINGJIE:/BIN/BASH
JEFF:X:1001:1024:WOSHIDASHUAIBI:/HOME/JEFF:/BIN/BASH
EGON:X:1002:1002::/HOME/EGON:/BIN/BASH
NFSNOBODY:X:65534:65534:ANONYMOUS NFS USER:/VAR/LIB/NFS:/SBIN/NOLOGIN
登入後複製

  5.取出当前主机的IP地址


[root@localhost ~]# ifconfig | egrep "inet.*broadcast.*"|cut -d&#39; &#39; -f10192.168.0.133
登入後複製

  6.列出/etc目录下所有已.conf结尾的文件的文件名,并将其名字转换为大写后保存至/tmp/etc.conf文件中


[root@localhost ~]# find /etc -name &#39;*.conf&#39; | egrep -o "[^/]*(\.conf)$"|tr &#39;a-z&#39; &#39;A-Z&#39; >/tmp/etc.conf
[root@localhost ~]# cat /tmp/etc.conf 
RESOLV.CONF
CA-LEGACY.CONF
FASTESTMIRROR.CONF
LANGPACKS.CONF
SYSTEMD.CONF
VERSION-GROUPS.CONF
LVM.CONF
LVMLOCAL.CONF
ASOUND.CONF
LDAP.CONF
MLX4.CONF
RDMA.CONF
SMTPD.CONF
登入後複製

  7.显示/var目录下一级子目录或文件的总数


[root@localhost ~]# ls /var | wc -l21
登入後複製

  8.取出/etc/group第三个字段数值最小的10个组的名字


[root@localhost ~]# sort -t: -k3 -n /etc/group|head -10 |cut -d&#39;:&#39; -f1
root
bin
daemon
sys
adm
tty
disklpmem
kmem
登入後複製

  9.将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中


[root@localhost ~]# cat /etc/fstab /etc/issue > /tmp/etc.test
[root@localhost ~]# cat /tmp/etc.test 

#
# /etc/fstab
# Created by anaconda on Sat May 13 10:12:58 2017#
# Accessible filesystems, by reference, are maintained under &#39;/dev/disk&#39;# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info#/dev/mapper/cl-root     /                       xfs     defaults        0 0UUID=2789d01a-4e2b-47a5-9c3c-537641648663 /boot                   xfs     defaults        0 0/dev/mapper/cl-swap     swap                    swap    defaults        0 0\S
Kernel \r on an \m
登入後複製

  对于正则表达式的使用需要多联系加强记忆,否则是用不好正则表达式的,在学习过程中切记多写多背。

以上是Linux中關於grep以及正規表示式的程式碼案例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Linux實際上有什麼好處? Linux實際上有什麼好處? Apr 12, 2025 am 12:20 AM

Linux適用於服務器、開發環境和嵌入式系統。 1.作為服務器操作系統,Linux穩定高效,常用於部署高並發應用。 2.作為開發環境,Linux提供高效的命令行工具和包管理系統,提升開發效率。 3.在嵌入式系統中,Linux輕量且可定制,適合資源有限的環境。

將Docker與Linux一起使用:綜合指南 將Docker與Linux一起使用:綜合指南 Apr 12, 2025 am 12:07 AM

在Linux上使用Docker可以提高開發和部署效率。 1.安裝Docker:使用腳本在Ubuntu上安裝Docker。 2.驗證安裝:運行sudodockerrunhello-world。 3.基本用法:創建Nginx容器dockerrun--namemy-nginx-p8080:80-dnginx。 4.高級用法:創建自定義鏡像,使用Dockerfile構建並運行。 5.優化與最佳實踐:使用多階段構建和DockerCompose,遵循編寫Dockerfile的最佳實踐。

apache80端口被佔用怎麼辦 apache80端口被佔用怎麼辦 Apr 13, 2025 pm 01:24 PM

當 Apache 80 端口被佔用時,解決方法如下:找出佔用該端口的進程並關閉它。檢查防火牆設置以確保 Apache 未被阻止。如果以上方法無效,請重新配置 Apache 使用不同的端口。重啟 Apache 服務。

apache怎麼啟動 apache怎麼啟動 Apr 13, 2025 pm 01:06 PM

啟動 Apache 的步驟如下:安裝 Apache(命令:sudo apt-get install apache2 或從官網下載)啟動 Apache(Linux:sudo systemctl start apache2;Windows:右鍵“Apache2.4”服務並選擇“啟動”)檢查是否已啟動(Linux:sudo systemctl status apache2;Windows:查看服務管理器中“Apache2.4”服務的狀態)啟用開機自動啟動(可選,Linux:sudo systemctl

oracle怎麼啟動監聽 oracle怎麼啟動監聽 Apr 12, 2025 am 06:00 AM

啟動 Oracle 監聽器的步驟如下:檢查監聽器狀態(使用 lsnrctl status 命令)對於 Windows,在 Oracle Services Manager 中啟動 "TNS Listener" 服務對於 Linux 和 Unix,使用 lsnrctl start 命令啟動監聽器運行 lsnrctl status 命令驗證監聽器是否已啟動

如何在Debian上監控Nginx SSL性能 如何在Debian上監控Nginx SSL性能 Apr 12, 2025 pm 10:18 PM

本文介紹如何在Debian系統上有效監控Nginx服務器的SSL性能。我們將使用NginxExporter將Nginx狀態數據導出到Prometheus,再通過Grafana進行可視化展示。第一步:配置Nginx首先,我們需要在Nginx配置文件中啟用stub_status模塊來獲取Nginx的狀態信息。在你的Nginx配置文件(通常位於/etc/nginx/nginx.conf或其包含文件中)中添加以下代碼段:location/nginx_status{stub_status

Debian系統中如何設置回收站 Debian系統中如何設置回收站 Apr 12, 2025 pm 10:51 PM

本文介紹兩種在Debian系統中配置回收站的方法:圖形界面和命令行。方法一:使用Nautilus圖形界面打開文件管理器:在桌面或應用程序菜單中找到並啟動Nautilus文件管理器(通常名為“文件”)。找到回收站:在左側導航欄中尋找“回收站”文件夾。如果找不到,請嘗試點擊“其他位置”或“計算機”進行搜索。配置回收站屬性:右鍵點擊“回收站”,選擇“屬性”。在屬性窗口中,您可以調整以下設置:最大大小:限制回收站可用的磁盤空間。保留時間:設置文件在回收站中自動刪除前的保

如何優化debian readdir的性能 如何優化debian readdir的性能 Apr 13, 2025 am 08:48 AM

在Debian系統中,readdir系統調用用於讀取目錄內容。如果其性能表現不佳,可嘗試以下優化策略:精簡目錄文件數量:盡可能將大型目錄拆分成多個小型目錄,降低每次readdir調用處理的項目數量。啟用目錄內容緩存:構建緩存機制,定期或在目錄內容變更時更新緩存,減少對readdir的頻繁調用。內存緩存(如Memcached或Redis)或本地緩存(如文件或數據庫)均可考慮。採用高效數據結構:如果自行實現目錄遍歷,選擇更高效的數據結構(例如哈希表而非線性搜索)存儲和訪問目錄信

See all articles