Linux三劍客之sed和awk的基本應用

2021-09-21 10:26:03 字數 2479 閱讀 4098

一、sed

1)sed簡介

sed的全稱為stream editor,sed在處理時一次只讀取檔案的一行並對這一行進行處理,並且sed將處理後的資料只會顯示在螢幕上,並不會對原檔案進行修改,所以說sed是乙個行編輯器

2)sed的使用格式

sed [options] "script" file....

3)詳解各選項與編輯命令的使用

選項:-n:靜默模式,不輸出模式空間內的內容,預設列印空間模式內的內容

-r:擴充套件的正規表示式

-f 檔案:指定sed指令碼檔案

-i:直接編輯原始檔

編輯命令

d:刪除

p:列印

i \:在被指定到的行前面插入文字

a \:在被指定到的行下面插入文字

r 檔案路徑:在指定的位置插入另外乙個檔案的內容

w 檔案路徑:將符合條件的所有行儲存至指定的檔案中

= 顯示符合條件的所在行的行號

s@@@:查詢條件也可以使用模式,但是被替換的內容不能使用模式  

使用格式:

sed '位址定界s@查詢條件@替換後的文字@修飾符

位址定界:自定義的起始行到結束行,預設為全文

有三種方式表示

startline,endline

/pat1/,/pat2/

/pattern/

用法:sed [options] 'addr1[,addr2]編輯命令'file...

sed [options] "addr1[,addr2]編輯命令"file...

sed在做替換時還支援正規表示式,正規表示式的使用本處不做講解。

修飾符:

g:global,全域性替換

i:ignore-case,不區分字元大小寫

4)練習

1)替換/etc/inittab檔案中」id:3:initdefault:"一行中的數字為5

sed 's@\(id:\)[0-9]\(:initdefault\)@\15\2' /etc/inittab

2)刪除/etc/init.d/funcions檔案中的空白行

3)刪除/etc/inittab檔案中位於行首的#;

4)刪除/etc/rc.d/rc.sysinit檔案中以#後跟至少乙個空白字元開頭的行的行首的#和空白字元。

sed "s@^#[[:space:]]\\@@g" /etc/rc.d/rc.sysinit

5)刪除/boot/grub/grub.conf檔案中行首的空白字元。

6)取出乙個檔案路徑的目錄名稱,如/etc/sysconfig/network,其目錄為/etc/sysconfig,功能類似dirname命令;

echo /etc/sysconfig/network | sed "s@[^/]\/\?$@@"

二、awk

1)簡介

awk是乙個報告生成工具,旨在把檔案中讀取到的每一行的每個字段分別進行格式化,而後進行顯示,awk支援使用變數、條件判斷、迴圈、陣列

現在linux系統上用到的都是gawk

2)格式:

awk [options] 'script'file....

awk [options] '/pattern/'file...

3)選項與模式的使用

選項-f:指定切割符,預設為空白

$0:整行顯示

$1,$2.......:位置引數

模式位址定界:

/pat1/,/pat2/,表示乙個範圍

/pattern/,表示被匹配到的行

表示式》,>=,<,<=,==,!=,~

begin:表示在執行動作前要做的操作

end:表示在動作執行後的操作

awk的常用四種分隔符:

輸入:行分隔符

字段分隔符

輸出:行分隔符

字段分隔符  

awk的內建變數

nf:最後乙個字段

fs:指定輸入分隔符,在begin中定義,相當於-f,預設為空白

ofs:指定輸出時的分隔符,在begin中定義,預設為空白

4)練習

1.顯示gid小於500的組

awk -f : '$3<500' /etc/group

2.顯示預設的shell為nologin的使用者

awk -f : '$7~/nologin$/' /etc/passwd

3,顯示eth0網絡卡檔案的配置資訊,注意,只顯示等號後面的值

awk -f = '' /etc/sysconfig/network-scripts/ifcfg-eth0

4.顯示/etc/sysctl。conf檔案中定義的核心引數:只顯示名稱,

awk -f =' !/^#|^$/'/etc/sysctl.conf

5.顯示eth0網絡卡的ip位址,通過ifconfig命令結果進行過濾

ifconfig eth0 |awk '/inet addr/' |awk -f : ''

建議:如果只是為了顯示文字內容,建議優先考慮grep

Linux三劍客之sed實戰

sed是linux中一種流編輯器,是文字處理非常有力的工具,支援將資料進行替換 刪除 新增 選取等功能。首先將決定選取哪些行進行編輯,規則可以是數字 正規表示式等,若沒有限制,則將處理輸入檔案的所有行。在處理時,將當前行儲存在臨時快取區中,稱為 模式空間 然後使用sed指令處理緩衝區的內容,處理成功...

八 Linux三劍客之sed

處理文字檔案的命令 引數說明 動作說明 c 取代,c 的後面可以接字串,這些字串可以取代 n1,n2 之間的行!d 刪除,d 後面通常不接任何字串 p 列印,將某個選擇的資料印出。通常 p 會與引數 sed n 一起使用 s 取代,搭配正規使用,例如 1,20s old new g 案例在testf...

Linux 文字三劍客之 sed

linux 系統中一切皆檔案。檔案是個文字。可以讀 可以寫,如果是二進位制檔案,還能執行。在使用linux的時候,大都是要和各式各樣檔案打交道。熟悉文字的讀取 編輯 篩選就是linux系統管理員的必備技能 文字處理工具 grep awk sed,本篇主要講sed sed行編輯命令。用來將資料進行選取...