shell_04-sed基本用法
sed命令
sed基本用法
sed命令選項
sed命令定位
sed基本編輯
sed基本用法(1)
sed(stream editor)是流編輯器,可對文本文件和標准輸入進行編輯。
sed只是對緩沖區中原始文件的副本進行編輯,並不編輯原始的文件,如果需要保存改動內容,可以選擇使用下面兩種方法:
重定向
w編輯命令
sed基本用法(2)
調用sed有三種方法:
在Shell命令行輸入命令調用sed,格式為:
sed [選項] ‘sed命令’ 輸入文件
將sed命令插入腳本文件後,然後通過sed命令調用它,格式為:
sed [選項] -f sed腳本文件 輸入文件
將sed命令插入腳本文件後,最常用的方法是設置該腳本文件為可執行,然後直接執行該腳本文件,格式為:
./sed腳本文件 輸入文件
第二種方法腳本文件的首行不以#!/bin/sed f開頭;第三種方法腳本文件的首行是#!/bin/sed f
推薦使用第一種方法和第三種方法
sed命令選項
-i 直接修改文件內容
-n 不打印所有行到標准輸出
-e 表示將下一個字符串解析為sed編輯命令,如果只傳遞一個編輯命令給sed,-e選項可以省略
-f 表示正在調用sed腳本文件
默認情況,sed處理完文本將輸入文件打印到標准輸出;一旦加上-n選項,sed就不再打印輸入文件,而只打印處理結果
當向sed命令傳遞多個編輯命令時,在每個編輯命令前需要加上-e選項
sed文本定位方法
x x為指定行號
x,y 指定從x到y的行號范圍
/pattern/ 查詢包含模式的行
/pattern/pattern/ 查詢包含兩個模式的行
/pattern/,x 從與pattern的匹配行到x號行之間的行
x,/pattern/ 從x號行到與pattern的匹配行之間的行
x,y! 查詢不包括x和y行號的行
sed編輯命令
p 打印匹配行
= 打印文件行號
a\ 在定位行號之後追加文本信息
i\ 在定位行號之前插入文本信息
d 刪除定位行
c\ 用新文本替換定位文本
s 使用替換模式替換相應模式
r 從另一個文件中讀文本
w 將文本寫入到一個文件
y 變換字符
q 第一個模式匹配完成後退出
l 顯示與八進制ASCII代碼等價的控制字符
{} 在定位行執行的命令組
n 讀取下一個輸入行,用下一個命令處理新的行
h 將模式緩沖區文本拷貝到保持緩沖區
H 將模式緩沖區文本追加到保持緩沖區
x 互換模式緩沖區和保持緩沖區內容
g 將保持緩沖區內容拷貝到模式緩沖區
G 將保持緩沖區內容追加到模式緩沖區
# cat insert.sed
#!/bin/sed -f
/^root:/i\
We insert a new line.
/^root:/a\
add a new line.(kiki)
/uucp:/c\
ccie
w /tmp/test.txt
# ./insert.sed /etc/passwd |head
sed文本定位
查找到與模式匹配的文本行,這是sed命令經常使用的命令
經常需要結合正則表達式
sed基本編輯(1)
-a 追加文本:匹配行後面插入
-i 插入文本:匹配行前面插入
-s 修改文本:將所匹配的文本行利用新文本替代
-d 刪除文本:將指定行或指定行范圍進行刪除
sed基本編輯(2)
sed替換文本操作將所匹配的文本行利用新文本替換,替換文本與修改文本功能有相似之處,它們之間的區別在於:替換文本可以替換一個字符串,而修改文本是對整行進行修改
替換文本的格式為:
s/被替換的字符串/新字符串/[替換選項]
g 表示替換文本中所有出現被替換字符串之處
p 與-n選項結合,只打印替換行
w 文件名 表示將輸出定向到一個文件
sed基本編輯(3)
默認情況下,sed s命令將替換後的全部文本都輸出,如果要求只打印替換行,需要結合使用-n和p選項,命令格式如下:
sed -n ‘s/被替換的字符串/新字符串/p’ 輸入文件
sed基本編輯(4)
從文件中讀入文本,r選項
退出命令: q選項表示完成指定地址的匹配後立即退出
變換命令: y選項表示字符變換,它將一系列的字符變換為相應的字符
sed ‘y/被變換的字符序列/變換的字符序列/’ 輸入文件
sed y命令要求被變換的字符序列和變換的字符序列等長,否則sed y命令將報錯
sed編輯命令中的{}符號可以指定在定位行上所執行的命令組,它的作用與sed的-e選項類似,都是為了在定位行執行多個編輯命令
[root@i tmp]# cat passwd
HAHA
ROOT
root
root
[root@i tmp]# sed 'y/root/kxxs/' passwd
HAHA
ROOT
kxxs
kxxs