歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> shell_04-sed基本用法

shell_04-sed基本用法

日期:2017/3/1 16:15:22   编辑:SHELL編程
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
Copyright © Linux教程網 All Rights Reserved