SHELL 學習之路(5)sed和awk命令

2021-09-05 09:11:59 字數 2399 閱讀 2231

#sed:stream editor :一次處理一行內容,處理時,把當前的行儲存在臨時緩衝區,處理完後,輸送到螢幕

sed [引數] '命令' file

p ##顯示

d ##刪除

a ##新增

c ##替換

i ##插入

1)p:

sed -n '/\:/p' /etc/fstab #顯示/etc/fstab中有:的行

sed -n '/^#/p' /etc/fstab #顯示/etc/fstab中以#開頭的行

sed -n '/^#/!p' /etc/fstab #顯示/etc/fstab中不是以#開頭的行

sed -n '2,6p' /etc/fstab #顯示/etc/fstab中2-6行

sed -n '2,6!p' /etc/fstab #除了/etc/fstab中2-6行,其餘都顯示

2)d:

sed '/^uuid/d' /etc/fstab  #刪除/etc/fstab檔案中以uuid開頭的行

sed '/^#/d' /etc/fstab #刪除/etc/fstab檔案中以#開頭的行

sed '/^$/d' /etc/fstab #刪除/etc/fstab檔案中的空行

sed '1,4d' /etc/fstab #刪除/etc/fstab檔案中1-4行

3)a:

sed '/hello/aworld' westos #在westos檔案後面加上world
4)c:替換

sed '/hello/chello world' westos #將westos檔案中所有的hello都替換成hello world

sed 's/hello/hello world/g' westos #將westos檔案中所有的hello都替換成hello world

sed 's/hello/hello\nworld/g' westos

5)i:

[root@server mnt]# sed '/hello/iworld\nwestos' westos

world

westos

hello

6)-i:改變原檔案內容

sed -i 's/westos/redhat/' passwd
#awk報告生成器

awk處理機制:根據模式一次從檔案中抽取一行文字,對這行文字進行切片(預設使用空白字元作為分隔符)

[root@server mnt]# cat test

this is a file

awk '' test ##$0表示輸出一整行

awk '' test ##以空格為分隔符輸出第乙個字段

awk '' test

awk '' test ##顯示第1和第2兩個字段

awk -f ":" '' /etc/passwd ##-f指定分隔符

#awk常用變數

awk '' /etc/passwd	##輸出檔名,和當前操作的行號

awk -f: '' /etc/passwd ##輸出每次處理的行號,以及當前以":"為分隔符的字段個數

總結:awk 『』 /etc/passwd

begin{}:讀入第一行文字之前執行的語句,一般用來初始化操作

{}:逐行處理

end{}:處理完最後以行文字後執行,一般用來處理輸出結果

awk 'begin '

awk -f: 'begin end ' passwd ##檔案開頭加redhat,末尾加westos,列印行號和內容

awk -f: '/bash$/' /etc/passwd ##輸出以bash結尾的

awk -f: 'nr==3 ' /etc/passwd ##第三行

awk -f: 'nr % 2 == 0 ' /etc/passwd ##偶數行

awk -f: 'nr >=3 && nr <=5 ' /etc/passwd #3-5行

awk 'beginend' linux.txt ##統計文字總欄位個數

#if單分支語句

awk -f: 'begin}end' /etc/passwd	##統計登入shell為bash的使用者
#if雙分支

awk -f: 'beginelse}end' /etc/passwd	##統計uid小於等於500和大於500的使用者個數
#for迴圈

awk 'begin}'

shell指令碼學習 5 sed命令學習

1 你想過sed為什麼叫sed麼?sed是stream editor的縮寫,sed就是乙個流編輯器,說白了,就是我們往sed裡輸入一串資訊,它給我們處理,然後輸出來。就這麼簡單。sed和cut類似,是乙個面向行處理的工具,它以 行 為處理單位,處理後的結果會輸出到標準輸出。所以說其實sed命令很安全...

shell指令碼學習sed

i 替換並儲存 s pattern replace string 只替換第一處 s pattern replace string g 替換所有 s pattern replace string ng 從第n處開始匹配 ex 直接替換文字 clz localhost shell learn sed i...

Shell指令碼的學習 sed

sed是流編輯器,對文字進行批量化處理。sed option script file1 file2 sed option f scriptfile file1 file2 sed 處理的檔案既可以由標準輸入重定向得到,也可以當命令列引數傳入,命令列引數可以一次傳入多個檔案,sed會依次處理。sed的...