一、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行編輯命令。用來將資料進行選取...