成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

用 awk + grep + sed 搞定日志處理神器組合拳

運維
Linux三劍客指的是grep、sed和awk這三個強大的文本處理工具。它們各自具有獨特的功能和優勢,能夠滿足不同的文本處理需求。

今天分享一下三劍客:grep,sed,awk。

一、Linux三劍客簡介

Linux三劍客指的是grep、sed和awk這三個強大的文本處理工具。

grep偏向于文本搜索,sed專注于文本編輯操作,awk則提供更精細的過濾處理功能。

它們各自具有獨特的功能和優勢,能夠滿足不同的文本處理需求。掌握這些工具的使用,可以極大提高工作和學習的效率。

二、grep:搜索之劍詳解

1. grep簡介

grep 是一個強大的命令行工具,用于在文本文件中搜索指定的模式。它能使用特定模式匹配(包括正則表達式)搜索文本,并默認輸出匹配行。

需要注意的是,grep會將匹配到的整行輸出,而awk可以指定某一行某一列進行輸出。

主要應用場景有:日志分析和文本處理,grep可以從日志文件中找出錯誤信息或特定事件,也用于從大量文本文件中提取特定信息

2. 工作原理

grep進行文本搜索時主要進行以下三步:

  • 輸入處理:grep 從指定的文件或標準輸入中逐行讀取數據,檢查每行是否與用戶提供的模式匹配。
  • 模式匹配:grep 采用正則表達式進行模式匹配,根據規則檢查每一行是否符合條件。
  • 輸出結果:當某行匹配成功時,grep 會將該行輸出

3. 語法和可選項

(1) 基本語法

grep [options] pattern [file...]
  • options:可選參數,用來控制搜索的方式、輸出格式等,下面會進行詳細講解
  • pattern:必填項,是要搜索的模式或正則表達式,用于匹配文件中的內容
  • file: 是要搜索的文件名或目錄,可以是多個

(2) 可選項參數

選項

描述

-E

使用擴展正則表達式,grep -E 等同于egrep

-i

忽略大小寫

-r

遞歸搜索某個目錄下所有文件

-v

反向匹配,輸出不匹配的行

-n

顯示行號

-c

顯示匹配行的總數,而不是打印匹配行。

-A n

輸出匹配的后n行

-B n

輸出匹配的前n行

-C n

打印匹配前后的n行

-L

列出未包含匹配項的文件名

-o

只顯示匹配到的字符串本身,而不是整個行

-w

精確匹配整詞,防止匹配到包含該單詞的部分詞匯

4. 實戰操作

(1)-i選項:忽略大小寫

# 打印處日志文件中所有包含error字符的,不論大小寫
grep -i error /var/log/message

(2)-r選項:遞歸查詢

# 輸出/etc/nginx/conf.d目錄所有關于www字符的行,常用查找域名或端口信息
grep -ir /etc/nginx/conf.d

(3)-E選項:支持擴展正則表達式 (4)-v選項:反向匹配

# 過濾某個文件的所有空行和帶#號注釋的行
grep -Ev '^#|^$'  /etc/nginx.conf

(4)-n選項:顯示行號

# 找出包含root和ssh字符的行號
grep -En 'root|ssh' /etc/passwd

(5)-l選項:查找文件名

# 查找文件包含root字符的文件名
grep -l root *

(6)-A選項:查找后面幾個字符

(7)-B選線:查找前面幾個字符

(8)-C選擇:查找前后幾個字符

# 查找有錯誤的后面3行信息
grep -iA 3 error /var/log/messages
# 查找有錯誤的前面3行信息
grep -iB 3 error /var/log/messages
# 查找有錯誤的上下3行信息
grep -iC 3 error /var/log/messages

三、sed:編輯之劍詳解

1. sed簡介

sed是編輯之劍:一個流編輯器,它允許用戶在文件中進行文本替換、刪除、添加等操作。sed支持基礎和擴展的正則表達式,并提供了豐富的文本處理功能,如替換命令、地址定界等。sed的強大之處在于它可以非交互式地編輯文件或標準輸入,使其成為自動化文本處理的理想選擇。

應用場景有:批量替換,文本處理,通過sed命令可以快速替換文件中的特定字符串,如配置文件的修改;在shell腳本中結合其他命令如grep、awk等,實現復雜的文本處理任務

2. 工作原理

sed的工作流程包括讀取、執行和顯示三個主要過程。

它會從輸入流中讀取一行內容并存儲到臨時緩沖區(模式空間),然后根據設定的命令在模式空間中執行編輯操作,最后將處理后的內容輸出到標準輸出

3. 語法、選項和動作介紹

(1)基本語法

sed [option] 'sed command' file

(2)常用選項

選項

描述

-n

只打印匹配處理的行,不修改文件

-e

允許多個編輯命令同時執行

-f

從腳本文件中讀取并執行sed命令

-i

直接修改文件內容

-r

支持擴展正則表達式

(3)常用動作

動作

描述

p

打印模式空間的內容

a

在當前行后追加內容

i

在當前行前插入內容

c

用新文本替換模式空間中的內容

d

刪除模式空間中的內容

s

替換內容

4. 實戰操作

sed可以做增刪改查操作,接下來分別演示。

復制/etc/passwd文件到/opt下,以/opt/passwd來做測試操作

cp /etc/passwd /opt/passwd

(1)增加操作

主要有兩個動作指令:a是追加內容到指定行后面,i是插入內容到指定行前面

# 在第2行后面追加內容
# 注意:這樣只是打印出來,并沒有修改文件里面的內容,如果要修改,需加-i參數
sed '1a 123' /opt/passwd 

# 在第一行前面插入內容,加-i后文件真實改變
sed -i '1i 456'  /opt/passwd

# 在最后一行后面追加內容
sed '$a 789' /opt/passwd

(2)刪除操作

# 刪除第一行
sed '1d'  /opt/passwd 

# 刪除2-4行
sed '2,4d'  /opt/passwd

# 將匹配的行進行刪除
sed '/\/bin\/bash/d' /opt/passwd

# 刪除以root開頭的行
sed '/^root/d' /opt/passwd

# 刪除文中的空行和注釋
sed -e '/^#/d' -e '/^$/d' /opt/passwd

(3)更改操作

s是用于替換操作的,日常中最為常用,配合g使用,可以替換全部匹配到的內容

# 替換常用模板,也可以將#改為/
sed -i 's#目標內容#替換內容#g' file

# 常用于修改selinux的命令
sed -i 'sy#=enforcing#=disabled#g' /etc/selinux/config

# 將nologin替換成login
sed 's/nologin/login/g' /opt/passwd

# 以mail開頭的行,將該行所有的mail替換為gmail
sed '/^mail/{s#mail#gmail#g}' /opt/passwd

(4)查找操作

# 只打印第三行內容
sed -n '3p'  /opt/passwd

四、awk:過濾之劍

1. awk簡介

awk是一個編程語言工具,主要用于處理數據和生成報告。它能夠按行和列分析文本文件,并對符合條件的數據執行操作,數據可以來自標準輸入也可以是管道或文件。awk特別適合于處理結構化的文本數據,如日志文件、CSV文件等

2. 工作原理

awk的工作原理可以分為三個主要部分:BEGIN塊、主循環體和END塊。

BEGIN塊中的代碼在處理任何輸入行之前執行,且只執行一次。它通常用于初始化變量或打印表頭信息;

主循環體是awk的核心部分,逐行讀取輸入文件并對每行進行處理。它會按指定的分隔符(默認為空格或制表符)將每行分割成字段,并存入內建變量中;

END塊中的代碼在所有輸入行處理完畢后執行,且只執行一次。常用于輸出最終結果或總結信息

注意:在使用awk時不一定要每個部分都出現,根據實際處理需求來使用哪個部分。

具體的工作流程分為以下三步:

  • 讀(Read):從文件、管道或標準輸入中讀入一行然后把它存放到內存中
  • 執行(Execute):對每一行數據,根據 AWK 命令按順序執行。默認情況是處理每一行數據,也可以指定模式
  • 重復(Repeat):一直重復上述兩個過程直到文件結束

3. 語法參數

(1)基礎語法 awk指令是由模式,動作,或者模式和動作的組合組成。

awk [options] 'pattern {action}' file

(2)可選項

選項

描述

-F <分隔符>

用于指定輸入字段的分隔符,默認是空格,可以使用逗號,冒號等

-v <變量名>=<值>

用于定義一個變量并賦值

-f <腳本文件>

用于從指定的腳本文件中讀取awk命令,適用于awk指令較復雜場景

-r <擴展正則表達式>

用于啟用擴展正則表達式模式匹配功能

-s

用于禁用自動換行功能,使得awk在輸出時不會自動換行

-c <命令>

用于執行單個awk命令而不是從文件讀取

(3)內置變量

變量

描述

NF

表示當前記錄的字段數量

NR

表示已讀的記錄數(即行號)

FS

表示輸入字段分隔符,默認為空格或制表符

OFS

表示輸出字段分隔符

RS

表示輸入記錄分隔符,默認為換行符

$0

當前處理的行的整行內容

$n

當前處理行的第n個字段(第n列)

4. 實戰操作

awk操作也是用/opt/passwd文件演示

(1)輸出全文內容并附帶行號

awk '{print NR,$0}' /opt/passwd

(2)只打印第五行

awk 'NR==2{print}'

(3)以: 為分隔符,打印第一列

awk -F ":" '{print $1}'  /opt/passwd

(4)以: 為分隔符,打印第2列和最后一列

awk -F ":" '{print $2,$NF}' /opt/passwd

(5)打印以:和/ 為分隔符且包含root的行的列數

awk -F ":/" '/root/{print NF}' /opt/passwd

(6)打印以:為分隔符包含root的行數和整行內容

awk -F ":/" '/root/{print NR,$0}' /opt/passwd

(7)格式化定制

[root@localhost ~]# awk -F ":" '{print "第"NR"行有"NF"列"}' /opt/passwd
第1行有1列
第2行有7列
第3行有7列
第4行有7列

生產環境BEGIN和END部分并不怎么常用,就不展開舉例了

五、總結

Linux三劍客是任何Linux用戶或系統管理員必須掌握的工具。無論是簡單的文本搜索、數據提取還是復雜的文本處理任務,這些工具都能提供強大的支持。

責任編輯:趙寧寧 來源: 運維李哥不背鍋
相關推薦

2019-08-20 14:29:45

grepsedawk

2017-03-31 14:05:26

Linux正則表達式基礎知識

2020-12-09 10:32:24

日志監控日志

2009-12-11 15:37:58

Linux日志處理

2023-12-10 21:35:45

Linux服務器日志分析

2025-04-28 10:13:03

JavaScript數組代碼

2011-10-31 09:26:07

惠普轉型云計算

2014-07-06 14:05:22

IBMWebSphere數字經濟

2021-03-15 07:39:48

LinuxAwk 語言

2021-07-02 10:10:55

SecurityJWT系統

2011-09-26 11:28:51

信息防泄漏溢信科技

2011-09-18 14:27:58

2015-10-20 19:08:28

華三通信

2024-11-25 12:00:00

C#日志記錄器

2021-05-13 10:25:29

Linuxgrep命令

2023-12-13 13:26:41

2025-02-10 08:10:00

Linuxsed命令

2024-05-06 08:56:31

PythonHTML正則表達式

2018-07-19 16:22:56

物聯網區塊鏈云計算

2011-07-20 10:03:58

360安全瀏覽器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品国产一区二区三区性色av | 91在线免费视频 | 亚洲视频自拍 | 国产一区二区三区免费观看在线 | 亚洲欧美少妇 | 青青草久久 | 99精品国产在热久久 | 在线观看av网站永久 | 日韩毛片免费看 | 最新黄色毛片 | 日本一本在线 | 羞羞视频网站免费观看 | 久久久久久久久久久蜜桃 | 国内久久| 成人国内精品久久久久一区 | 亚洲精品一区二区三区在线 | 国产精品久久久久久影视 | 亚洲午夜网| 国产91丝袜在线播放 | 97av在线| 高清国产午夜精品久久久久久 | 欧美精品综合在线 | 91免费观看视频 | 国产精品五区 | 欧美黑人一级爽快片淫片高清 | 91精品一区二区 | 免费看一区二区三区 | 久久亚洲一区二区三 | 精品1区2区3区 | 国产精品美女久久久久久久网站 | 久久精品视频在线免费观看 | 在线中文字幕视频 | av福利网 | 精品网站999 | 国产精品一区二区在线免费观看 | 国产乱码精品一品二品 | 国产高清在线观看 | 免费的色网站 | 日本一区二区高清视频 | 99精品99久久久久久宅男 | 久久国产亚洲 |