一:sed工具
1,set的介紹:sed是一種流編輯器,它一次處理一行內容。處理時,把當前 處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern
space),接著用sed命令處理緩沖區中的內容,處理完成后
,把緩沖區的內容送往屏幕。然后讀入下行,執行下一個循
環。如果沒有使諸如‘D’的特殊命令,那會在兩個循環之間
清空模式空間,但不會清空保留空間。這樣不斷重復,直到
文件末尾。文件內容并沒有改變,除非你使用重定向存儲輸
出。
它的功能:主要用來自動編輯一個或多個文件,簡化對文件的反復操作,編寫轉換程序等。
2,sed的用法:
sed | -n | 不輸出模式空間內容到屏幕,既不自動打印 |
-e | 多點編輯,對每行處理時,可以有多個script | |
-f | 把script寫到文件中,在執行sed時-f指定文件路徑,如果是多個script,換行寫 | |
-r |
支持正則表達式 |
|
-i | 直接將處理的結果寫入文件 | |
-i 文件名 | 在將處理結果寫入文件之前備份一份 |
script
地址的定界:
(1)不給地址,對全文進行處理
sed -n ‘p’ 文件
(2)單地址:
#:指定行
sed -n ‘2p’ 文件: 指定文件的第二行內容
/pattern/:被此處模式所能夠匹配到的每一行
sed -n ‘/nihao/p’ 文件:顯示文件中匹配到帶有nihao的一行
(3) 地址范圍:
#,#
sed -n ‘1,5p’ 文件:顯示文件中一到五行的信息
#,#+
sed -n ‘1,+2p’ 文件:顯示文件中第一行和第三行的信息
/part1/,/part2/
sed -n ‘/n/,/m/’ 文件 :顯示文件中第n到m行的信息
(4)~表示步進
sed -n ‘1~2p’ 只顯示奇數行
sed -n ‘2~2p’ 只顯示偶數行
編輯的命令:
d:刪除模式空間匹配到的行,并立即啟用下一輪循環
sed ‘2d’ 文件名 :刪除文件中第二行的內容
p:打印當前模式空間內容,追加到默認輸出之后
a[\]txt :在指定行后面追加文本,可以使用\n實現多行追加
i[\]txt :在行前面插入文本
c[\]txt : 替換行為單位或多行文本
w /path/文件:保存模式匹配到的行至指定文件
r /path/文件 :讀取指定文件的文本到模式空間中匹配到的行后
相關示例:
1、刪除centos7系統/etc/grub2.cfg文件中所有以空白開頭
的行行首的空白字符
2、刪除/etc/fstab文件中所有以#開頭,后面至少跟一個空
白字符的行的行首的#和空白字符
3、處理/etc/fstab路徑,使用sed命令取出其目錄名和基名
4、利用sed 取出ifconfig命令中本機的IPv4地址
5、統計centos安裝光盤中Package目錄下的所有rpm文件的以.分隔倒數第二個字段的重復次數
6、統計/etc/init.d/functions文件中每個單詞的出現次數,并排序(用grep和sed兩種方法分別實現)
第二種方法:
原創文章,作者:風之軌跡,如若轉載,請注明出處:http://www.www58058.com/85418