shell腳本之文本處理工具grep和sed

1.grep

grep
grep -E = egrep

grep 格式

用法:grep 匹配條件 處理文件

grep root passwd 過濾root關鍵字
grep ^root passwd 以root開頭
grep root$ passwd 以root結尾
grep -i root passwd 後略大小寫
grep -E “<root” passwd root字符之前不能有字符
grep -E “root>” passwd root字符之後不能有字符
grep -數字 顯示過濾行以及上面幾行和下面幾行
grep -n 顯示匹配的行所在行號
grep -A 顯示過濾行以及下面幾行
grep -B 顯示過濾行以及上面幾行
grep -v 反向過濾

在這裏插入圖片描述

在這裏插入圖片描述

grep字符數量匹配規則

^westos 以westos開頭
westos$ 以westos結尾
w…s w開頭s結尾中間4個任意字符
…s s結尾前面5個任意字符
* 字符出現0到任意次
? 0到1次
+ 1到任意次
{n} n次
{m,n} m到n次
{0,n} 0-n次
{,n} 0-n次
{m,} 最少m次
(lee){2} lee字符串出現2次

在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述

練習腳本: 請顯示系統中能被su命令切換的用戶名稱

在這裏插入圖片描述
在這裏插入圖片描述

加粗樣式

2.sed

命令格式:

sed 參數 命令 處理對象
sed 參數 處理對象 -f 處理規則文件

對字符的處理

p

sed -n 5p westos 顯示第五行
sed -n 3,5p westos 顯示3到5行
sed -ne "3p;5p westos 顯示3和5行
sed -ne 1,5p westos 1-5行
sed -ne ‘5,$p’ westos 5到最後以行
sed -n ‘/^#/p’ fstab 顯示以#開頭的行

在這裏插入圖片描述
在這裏插入圖片描述

d 刪除

sed 5d westos 刪除第五行
sed ‘/^#/d’ fsstsb 把#開頭的行刪除
sed ‘/^UUID/!d’ fstab 除了UUID以外的行都刪除
sed -e ‘5,$d’ westos 第五行到結尾都刪除

在這裏插入圖片描述
a 添加

sed -e ‘$a hello world’ fstab 添加hello world到fstab文件
sed -e ‘$a hello\nworld’ fstab 添加hello world到fstab文件每個單詞一行
sed -e ‘/^#/a hello world’ fstab #開頭的行添加

在這裏插入圖片描述

在這裏插入圖片描述

c 替換

sed -e ‘/^#/c hello world’ fstab #號開頭的行替換成 hello world
sed ‘5chello world’ westos 第五行替換成 hello world

在這裏插入圖片描述
在這裏插入圖片描述

w 把符合的行寫到指定文件中
sed ‘/^UUID/w westofile’ westos 把westos中UUID開頭的行寫入westosfile中
i 插入
sed ‘5ihello westos’ westos 把hello westos插入第五行

在這裏插入圖片描述

r 整合文件
sed ‘5r haha’ westos 把haha 整合到westos中

sed 字符替換

s

ed 's/:/###/g' westos
sed 's/:/###/' westos
sed 's/:/###/g' westos
sed '1,5s/:/###/g' westos
sed '1s/:/###/g' westos
sed '1s/:/###/g;5s/:/###/g' westos sed '/lp/,/shutdown/s/:/###/g' westos sed 's/\//####/g' westos
sed 's@/@####@g' westos

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
sed ‘s@/@####@g’ -i westos
把sed處理的內容保存到westos文件中

練習及腳本
Apache_port.sh
此腳本後介入數字
http的端口就改爲此數字
假設selinux爲關閉狀態

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章