Liunx常用操作(八)-sed命令詳細說明


一、sed簡介
sed是一種流編編器,它是文本處理中非常中的工具,能夠完美的配合正則表達式便用,功物能不同凡響。
處理時,把當前處理的行存儲在臨時緩沖區中,稱為”模式空間”( oattern space),接看用sed命令處理緩沖區中的內容,處理成后,把緩沖區的內容送往屏幕顯示。
接着理下一行,這樣不斷重復,直到文件末。文件內容沒有改改變,除非使用了寫入的命令,將內容更新。
定址用於決定對哪些行進行編輯。地址的形式可以是數字、正則表達式、或二者的結合。如果沒有指定地址,sed將處理輸入文件的所有行。
 
二、sed命令功能
命令  功能
a\  在當前行后添加一行或多行。多行時除最后一行外,每行末尾需用“\”續行
c\  用此符號后的新文本替換當前行中的文本。多行時除最后一行外,每行末尾需用"\"續行
i\  在當前行之前插入文本。多行時除最后一行外,每行末尾需用"\"續行
d   刪除行
h   把模式空間里的內容復制到暫存緩沖區
H   把模式空間里的內容追加到暫存緩沖區
g   把暫存緩沖區里的內容復制到模式空間,覆蓋原有的內容
G   把暫存緩沖區的內容追加到模式空間里,追加在原有內容的后面
l   列出非打印字符
p   打印行
n   讀入下一輸入行,並從下一條命令而不是第一條命令開始對其的處理
q   結束或退出sed
r   從文件中讀取輸入行
!   對所選行以外的所有行應用命令
s   用一個字符串替換另一個
g   在行內進行全局替換
w   將所選的行寫入文件
x   交換暫存緩沖區與模式空間的內容
y   將字符替換為另一字符(不能對正則表達式使用y命令)
 
三、sed常見命令參數
p:print
d:delete
=:打印匹配行的行號
-n 取消默認的完整輸出,只要需要的  
-e 允許多項編輯
-i 修改文件內容
-r 不需要轉義
 
四、舉例sed常見用法
源文件如下:
1、只打印第三行文字
sed -n '3p' 123.txt
 
2、只查看文件的第3行到第9行
sed -n '3,9p' 123.txt
 
3、過濾特定字符串,顯示正行內容
sed -n '/222/p' 123.txt
 
4、打印1-5行,並顯示行號
sed -n -e '1,5p' -e '='   123.txt
 
5、僅僅顯示匹配字符串的行號
sed -n '/5555/=' 123.txt
 
6、將‘1111’替換為‘1111第一行’
sed 's/1111111/11111第一行/g' 123.txt
注:-i命令才會真實生效
sed -i 's#222#222第二行#g' 123.txt
 
7、打印最后一行
sed -n  '$p' 123.txt
 
8、在文件第一行添加start,文件結尾添加over
界面現實:sed -e '1i start' -e '$a over' 123.txt
真實寫入:
sed -i -e  '1i start' -e '$a over' 123.txt
 
9、在文件第一行和第四行的每行下面添加helloworld
sed '1,4i helloworld' 123.txt
 
 
10、& 符號在sed命令中代表上次匹配的結果
sed 's/第二行/已經不是&/g' 123.txt
 
11、刪除第3到第9行,只是不顯示而已
sed '3,9d' 123.txt
 
12、刪除包含"start"的行到包含"999"的行之間的行
sed '/start/,'/999'/d' 123.txt
 
13、-e是編輯命令,用於多個編輯任務
打印1到2行的內容,並匹配‘第二行替換為'我是第三行了'
sed -e '1,2d' -e 's/第二行/我是第一行了/g' 123.txt
 
 
14、-r命令是讀命令。sed使用該命令將一個文本文件中的內容加到當前文件的特定位置上
sed '/3333/ r test002.txt' 123.txt
【123.ltxt  匹配root后讀入test002.txt的內容(helloworld123:)在匹配內容之下,僅顯示用】
 
15、-w是寫入命令
將【123.txt匹配root后寫入test002.txt',真實寫入,,添加-n參數后,不打印源文件】
sed '/第二行/ w test002.txt' 123.txt
 
16、sed的正則匹配
正則匹配IP和子網掩碼
ifconfig | sed -n '2p'
ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'(提取ID地址)
find . -name "*.txt" | xargs sed -i 's/第二行/第三行/g'(配合find命令使用:查找並替換)
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM