偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

高效處理文本:grep、sed、awk

開發(fā) 前端
grep、sed??和??awk??在??Linux??文本處理工作中作用巨大,它們既可以單獨使用,解決各類簡單或復(fù)雜的文本處理需求,也能相互配合形成更強(qiáng)大的文本處理 “組合拳”。建議大家在日常工作中多實踐,熟練掌握這些工具,提升工作效率。

前言

Linux系統(tǒng)中,文本處理是日常運(yùn)維和開發(fā)工作中的常見任務(wù)。grep、sedawk這三個工具堪稱文本處理領(lǐng)域的三劍客,它們功能強(qiáng)大且各有所長,熟練掌握它們能顯著提升工作效率。

grep:文本搜索利器

概述

grep是用于在文本文件中搜索指定模式的命令行工具,它支持使用正則表達(dá)式進(jìn)行匹配,并默認(rèn)輸出匹配的整行內(nèi)容。在日志分析和文本信息提取場景中,grep應(yīng)用廣泛,比如從大量日志文件里精準(zhǔn)找出錯誤信息或特定事件記錄。

原理

grep工作時,首先從指定文件或標(biāo)準(zhǔn)輸入逐行讀取數(shù)據(jù),接著采用正則表達(dá)式對每行數(shù)據(jù)進(jìn)行模式匹配,一旦匹配成功就將該行輸出。

語法與選項

基本語法為:grep [options] pattern [file...] ,其中options是可選參數(shù),pattern是必填的搜索模式,file是要搜索的文件或目錄(可多個)。常見選項如下:

圖片圖片

示例

  • 忽略大小寫搜索:查找系統(tǒng)日志中包含warning(不區(qū)分大小寫)的行,命令為grep -i warning /var/log/syslog
  • 遞歸查詢:在項目代碼目錄中遞歸查找包含database的文件行,命令為grep -ir database /home/user/project/src
  • 擴(kuò)展正則表達(dá)式搜索:查找文件中符合特定日期格式(如YYYY-MM-DD)的行,命令為grep -E '[0-9]{4}-[0-9]{2}-[0-9]{2}' data.txt
  • 反向匹配:過濾掉配置文件中的注釋和空行,命令為grep -Ev '^#|^$' /etc/httpd/conf/httpd.conf
  • 顯示行號:找出用戶配置文件中包含usernamepassword的行號,命令為grep -En 'username|password' ~/.config/user.conf
  • 查找文件名:查找當(dāng)前目錄下包含error的文件名,命令為grep -l error *
  • 輸出匹配行前后內(nèi)容:查找郵件日志中包含spam的行及其前后2行,命令為grep -iC 2 spam /var/log/mail.log

sed:文本編輯大師

概述

sed是一款流編輯器,支持在文件中進(jìn)行文本替換、刪除、添加等操作,并且支持基礎(chǔ)和擴(kuò)展正則表達(dá)式,提供豐富文本處理功能,如替換命令、地址定界等。在批量替換文本、修改配置文件以及結(jié)合其他命令實現(xiàn)復(fù)雜文本處理任務(wù)方面,sed表現(xiàn)出色。

原理

sed從輸入流讀取一行內(nèi)容并存入臨時緩沖區(qū)(模式空間),然后依據(jù)設(shè)定的命令在模式空間執(zhí)行編輯操作,最后將處理后的內(nèi)容輸出到標(biāo)準(zhǔn)輸出。

語法與選項

基本語法為:sed [option] 'sed command' file 。常用選項包括:

示例

先復(fù)制/etc/hosts文件到/tmp下作為測試文件:cp /etc/hosts /tmp/hosts。

增加操作

a是追加內(nèi)容到指定行后面,i是插入內(nèi)容到指定行前面

# 在第一行前面插入# This is a comment并修改文件
sed -i '1i # This is a comment' /tmp/hosts

# 在最后一行后面追加::1 localhost ipv6 - localhost ipv6 - loopback
sed -i '$a ::1 localhost ipv6 - localhost ipv6 - loopback' /tmp/hosts
刪除操作
# 刪除第一行
sed -i '1d' /tmp/hosts

# 刪除4 - 6行
sed -i '4,6d' /tmp/hosts

# 刪除匹配127.0.0.1
sed -i '/127.0.0.1/d' /tmp/hosts

# 刪除以#開頭的注釋行
sed -i '/^#/d' /tmp/hosts

# 刪除文件中的空行
sed -i '/^$/d' /tmp/hosts
更改操作

替換操作常用模板為sed -i 's#目標(biāo)內(nèi)容#替換內(nèi)容#g' file

#將文件中的example.com替換為new-example.com
sed -i 's#example.com#new-example.com#g' /tmp/hosts
sed -i 's/new-example.com/new-example.com/g' /tmp/hosts

# 該行所有192.168替換為10.0
sed -i '/^192.168./{s#192.168.#10.0.#g}' /tmp/hosts
查找操作
# 打印`/tmp/hosts`文件第五行內(nèi)容
sed -n '5p' /tmp/hosts

awk:數(shù)據(jù)處理專家

概述

awk是編程語言工具,擅長處理數(shù)據(jù)和生成報告,可按行和列分析文本文件,并對符合條件的數(shù)據(jù)執(zhí)行操作。其數(shù)據(jù)來源廣泛,包括標(biāo)準(zhǔn)輸入、管道或文件,尤其適用于處理結(jié)構(gòu)化文本數(shù)據(jù),如日志文件、CSV文件等。

原理

awk工作分為三個主要部分:BEGIN塊、主循環(huán)體和END塊。

  • BEGIN塊代碼在處理輸入行前執(zhí)行且僅執(zhí)行一次,常用于初始化變量或打印表頭;
  • 主循環(huán)體逐行讀取輸入文件,按指定分隔符(默認(rèn)為空格或制表符)將每行分割成字段并存入內(nèi)建變量;
  • END塊代碼在所有輸入行處理完畢后執(zhí)行且僅執(zhí)行一次,常用于輸出最終結(jié)果或總結(jié)信息。實

際使用時,可根據(jù)需求選擇使用相應(yīng)部分。具體工作流程為讀入一行數(shù)據(jù)存入內(nèi)存,按命令對每行數(shù)據(jù)執(zhí)行操作,不斷重復(fù)直至文件結(jié)束。

語法與選項

基本語法為:awk [options] 'pattern {action}' file ??蛇x項如下:

圖片圖片

圖片圖片

示例

/tmp/employee.csv文件(格式為姓名,年齡,部門,薪資)為例:

# 輸出全文并附帶行號
awk '{print NR,$0}' /tmp/employee.csv

# 只打印第三行
awk 'NR==3{print}' /tmp/employee.csv

# 以 “,” 為分隔符,打印姓名列
awk -F ","'{print $1}' /tmp/employee.csv

# 打印年齡列和薪資列
awk -F ","'{print $2,$3}' /tmp/employee.csv

# 打印薪資大于 5000 的員工姓名和薪資
awk -F ","'$3 > 5000{print $1,$3}' /tmp/employee.csv

# 打印薪資等于5000的員工信息
awk -F ","'$3 == 5000{print $0}' /tmp/employee.csv

# 按特定格式輸出員工信息
awk -F ","'{print "員工 " $1 ",年齡 " $2 ",薪資 " $3 }' /tmp/employee.csv

最后

grep、sedawkLinux文本處理工作中作用巨大,它們既可以單獨使用,解決各類簡單或復(fù)雜的文本處理需求,也能相互配合形成更強(qiáng)大的文本處理 “組合拳”。建議大家在日常工作中多實踐,熟練掌握這些工具,提升工作效率。

責(zé)任編輯:武曉燕 來源: 一安未來
相關(guān)推薦

2025-05-12 08:35:00

Linux文本處理工具運(yùn)維

2019-08-20 14:29:45

grepsedawk

2017-03-31 14:05:26

Linux正則表達(dá)式基礎(chǔ)知識

2025-02-10 08:10:00

Linuxsed命令

2017-03-02 18:10:20

LinuxShell命令

2021-09-10 16:30:29

LinuxShell文本

2021-03-15 07:39:48

LinuxAwk 語言

2021-05-13 10:25:29

Linuxgrep命令

2024-04-15 08:39:54

2023-09-05 10:04:35

Linux運(yùn)維

2016-03-30 11:16:33

2024-11-06 17:04:47

AWK編程

2023-12-10 21:35:45

Linux服務(wù)器日志分析

2022-03-10 10:39:00

LinuxSedAwk

2014-02-12 14:45:40

Linux文本文件

2020-11-16 11:10:00

ShellLinux正則表達(dá)式

2016-12-28 11:20:31

Pythonre模塊

2021-01-07 11:00:59

Sed文本編輯器Linux

2019-11-06 16:40:31

awkLinux文本分析工具

2019-03-21 14:30:15

Linux文本分析命令
點贊
收藏

51CTO技術(shù)棧公眾號