初識Grep

来源:https://www.cnblogs.com/quail2333/archive/2019/07/13/11179106.html
-Advertisement-
Play Games

前言:grep這個命令都不陌生,最常用的就是和管道符結合,例如:ps -ef | grep docker,但是我還是想認識一下這個非常giao的命令。。。 Grep稱為全局正則表達式檢索工具,在企業中被廣泛的採用。 grep的語法格式: grep -option(參數) ‘word’(關鍵詞) fi ...


前言:grep這個命令都不陌生,最常用的就是和管道符結合,例如:ps -ef | grep docker,但是我還是想認識一下這個非常giao的命令。。。

Grep稱為全局正則表達式檢索工具,在企業中被廣泛的採用。

grep的語法格式:

grep   -option(參數) ‘word’(關鍵詞) file(文本文件);

grep參數:

-a 不要忽略二進位數據。
-A<顯示列數> 除了顯示符合範本樣式的那一行之外,並顯示該行之後的內容。
-b 在顯示符合範本樣式的那一行之外,並顯示該行之前的內容。
-c 計算符合範本樣式的列數。
-C<顯示列數>或-<顯示列數>  除了顯示符合範本樣式的那一列之外,並顯示該列之前後的內容。
-d<進行動作> 當指定要查找的是目錄而非文件時,必須使用這項參數,否則grep命令將回報信息並停止動作。
-e<範本樣式> 指定字元串作為查找文件內容的範本樣式。
-E 將範本樣式為延伸的普通表示法來使用,意味著使用能使用擴展正則表達式。
-f<範本文件> 指定範本文件,其內容有一個或多個範本樣式,讓grep查找符合範本條件的文件內容,格式為每一列的範本樣式。
-F 將範本樣式視為固定字元串的列表。
-G 將範本樣式視為普通的表示法來使用。
-h 在顯示符合範本樣式的那一列之前,不標示該列所屬的文件名稱。
-H 在顯示符合範本樣式的那一列之前,標示該列的文件名稱。
-i 忽略字元大小寫的差別。
-l 列出文件內容符合指定的範本樣式的文件名稱。
-L 列出文件內容不符合指定的範本樣式的文件名稱。
-n 在顯示符合範本樣式的那一列之前,標示出該列的編號。
-q 不顯示任何信息。
-R/-r 此參數的效果和指定“-d recurse”參數相同。
-s 不顯示錯誤信息。
-v 反轉查找。
-w 只顯示全字元合的列。
-x 只顯示全列符合的列。
-y 此參數效果跟“-i”相同。
-o 只輸出文件中匹配到的部分。

grep常見用法:

1.查找/etc/passwd文件中是否存在quail用戶信息

[root@www sed]# grep "quail" /etc/passwd
quail:x:1000:1000:quail:/home/quail:/bin/bash
[root@www sed]# grep -w "quail" /etc/passwd
quail:x:1000:1000:quail:/home/quail:/bin/bash
[root@www sed]# grep -i quail /etc/passwd
quail:x:1000:1000:quail:/home/quail:/bin/bash

2.ifconfig看到網卡信息,只查看IP地址所在行信息

[root@www sed]# ifconfig |grep -w inet
        inet 192.168.249.132  netmask 255.255.255.0  broadcast 192.168.249.255
        inet 127.0.0.1  netmask 255.0.0.0
[root@www sed]# ifconfig |grep netmask
        inet 192.168.249.132  netmask 255.255.255.0  broadcast 192.168.249.255
        inet 127.0.0.1  netmask 255.0.0.0
[root@www sed]# ifconfig |grep -w 255
        inet 192.168.249.132  netmask 255.255.255.0  broadcast 192.168.249.255
        inet 127.0.0.1  netmask 255.0.0.0
[root@www sed]# ifconfig |grep -E "192|127"
        inet 192.168.249.132  netmask 255.255.255.0  broadcast 192.168.249.255
        inet 127.0.0.1  netmask 255.0.0.0
[root@www sed]# ifconfig |grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}"
        inet 192.168.249.132  netmask 255.255.255.0  broadcast 192.168.249.255
        inet 127.0.0.1  netmask 255.0.0.0

實驗需要,新建list.txt並寫入如下內容:

[root@www sed]# cat list.txt 
192.168.1.11 root 123456
192.168.2.11 root 123456
192.168.3.11 root 123456
192.168.4.11 root 123456
192.168.5.11 root 123456
172.0.0.1 www 123456
1111.222.111.111 root 123456
111.22.11.1111 root 123456

3.統計root 字元總行數

[root@www sed]# grep -c root list.txt 
7

4.不區分大小寫查找RoOt所有行

[root@www sed]# grep -i RoOt list.txt 
192.168.1.11 root 123456
192.168.2.11 root 123456
192.168.3.11 root 123456
192.168.4.11 root 123456
192.168.5.11 root 123456
1111.222.111.111 root 123456
111.22.11.1111 root 123456

5.列印www行以及行號

[root@www sed]# grep -n www list.txt 
6:172.0.0.1 www 123456

6.不列印root行

[root@www sed]# grep -v root list.txt 
172.0.0.1 www 123456

7.以168.開頭的接3 5的行

[root@www sed]# grep "168.[35]" list.txt 
192.168.3.11 root 123456
192.168.5.11 root 123456

8.顯示輸出行首不是192的行

[root@www sed]# grep -E -v  "^192" list.txt 
172.0.0.1 www 123456
1111.222.111.111 root 123456
111.22.11.1111 root 123456

 

9.匹配R或r開頭的行,提前echo "root 123\nRoot 123" > list.txt

[root@www sed]# grep -E "^[Rr]oot" list.txt 
root 1234 2134 123
Root 123 123 123 786

10.匹配r,兩個任意字元,緊接t的行

[root@www sed]# grep "r..t" list.txt 
192.168.1.11 root 123456
192.168.2.11 root 123456
192.168.3.11 root 123456
192.168.4.11 root 123456
192.168.5.11 root 123456
1111.222.111.111 root 123456
111.22.11.1111 root 123456
root 1234 2134 123

11.匹配字母緊跟w 的行

[root@www sed]# grep -E "[a-Z]w " list.txt 
172.0.0.1 www 123456

12.列印字元w字元連續出現2次以上的行

[root@www sed]# grep "w\{2,\}" list.txt 
172.0.0.1 www 123456

13.列印字元o連續出現3次和5次的行

[root@www sed]# grep "o\{3,5\}" list.txt 
rooot
rooooot

14.列印/usr/local/nginx/conf/nginx.conf.default空行的所在的行號

[root@www sed]# grep -n "^$" /usr/local/nginx/conf/nginx.conf.default 
1:
4:
8:
10:
11:
15:
16:
20:
24:
26:
29:
32:
34:
38:
40:
42:
47:
49:
56:
62:
72:
80:
81:
88:
94:
95:
101:
104:
107:
110:
116:

15.過濾/usr/local/nginx/conf/nginx.conf.default文件中的#和空行以及行號

[root@www sed]# grep -E -v -n "#|^$" /usr/local/nginx/conf/nginx.conf.default
3:worker_processes 1;
12:events {
13: worker_connections 1024;
14:}
17:http {
18: include mime.types;
19: default_type application/octet-stream;
27: sendfile on;
31: keepalive_timeout 65;
35: server {
36: listen 80;
37: server_name localhost;
43: location / {
44: root html;
45: index index.html index.htm;
46: }
52: error_page 500 502 503 504 /50x.html;
53: location = /50x.html {
54: root html;
55: }
79: }
117:}

16.當前目錄下文件內匹配包含quail或test或anchun的文件

[root@www sed]# for i in `seq 1 3`;do echo quail$i > test$i.txt ;done
[root@www sed]# for i in `seq 1 3`;do echo test$i > yoyoyo$i.txt ;done
[root@www sed]# for i in `seq 1 3`;do echo anchun$i > lalal$i.txt ;done
[root@www sed]# for i in `seq 1 3`;do echo error$i > yingyingying$i.txt ;done ######實驗環境######
[root@www sed]# grep -E -ra "quail|test|anchun" *
lalal1.txt:anchun1
lalal2.txt:anchun2
lalal3.txt:anchun3
test1.txt:quail1
test2.txt:quail2
test3.txt:quail3
yoyoyo1.txt:test1
yoyoyo2.txt:test2
yoyoyo3.txt:test3

17.匹配IPV4地址

[root@www sed]# grep -E -w --color "([0-9]{1,3}\.){3}[0-9]{1,3}" list.txt 
192.168.1.11 root 123456
192.168.2.11 root 123456
192.168.3.11 root 123456
192.168.4.11 root 123456
192.168.5.11 root 123456
172.0.0.1 www 123456

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • --表:table --欄位:columsA、columsB、columsC、columsD void Main(){ string sql="select columsA from table"; DataTable dt=SqlHelper.executeQuery(sql); dt.rows[ ...
  • 關於winform上傳圖片到Java後端,保存到資料庫,有多種方法,本文主要介紹利用picturebox控制項,點擊按鈕上傳圖片,將圖片轉化為base64格式,以json格式上傳到Java後臺,再從java端解析,保存到資料庫。 上代碼: 首先,畫面上添加一個picturebox控制項,再添加一個but ...
  • 升級比對可訪問 "NEST 6.X升級到7.X" 查看 ElasticClient CreateIndex 升級前代碼,NEST版本6.6.0 升級後代碼,NEST版本7.0.1 升級參考地址: "ElasticClient CreateIndex.cs" ElasticClient IndexEx ...
  • 1、問題原因 使用.net core 生成 api項目 post 請求 把post參數放到請求方法參數內 獲取不到 解決方案 : 1. 可以在參數前加上 [fromform] string phone (看起來不簡潔) 2. 把生產api項目是自動生成的[ApiController] control ...
  • 我們在用C# 開發程式時,經常會使用的多線程,實現多任務的處理。一般常用的方法是新建多個線程,進行處理。 今天我分享一個採用線程池的方式來實現的實例。對有需要的朋友做個借鑒。 實例: Winform using System; using System.Collections.Generic; us ...
  • 一.介紹 最近搭建了一套CQRS框架,需要在投入開發前,進行必要的壓力測試。Web Capacity Analysis Tool (Wcat)是一種輕量級HTTP負載生成工具,主要用於衡量受控環境中Web伺服器的性能。WCAT可以模擬數千個併發用戶向單個網站或多個網站發出請求。WCAT引擎使用一個簡 ...
  • DevExpress提供的樹形列表控制項TreeList和樹形下拉列表控制項TreeListLookupEdit都是非常強大的一個控制項,它和我們傳統Winform的TreeView控制項使用上有所不同,我一般在Winform開發中根據情況混合使用這些控制項,不過整體來看,基於DevExpress的TreeL... ...
  • ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...