天天看點

Sed指令總結

 Sed指令總結

一、sed是什麼

Sed全名為Stream EDitor,即流式編輯器,行編輯器

二、sed常用用法

    sed [options] 'script(模式指令)' input_file...

    sed [options] -f script_file(sed腳本) input_file...

sed 'ADDR1,ADDR2command' input_file;例如sed '1,2d' fstab(可輸出重定向到别的檔案)

    sed '1,2!(對指令取反)d' fstab除了第一行,第二行,其餘全删除

sed '/PATTERN/command' input_file(使用基本正規表達式的原字元,而不實用grep)

sed '/PATTERN1/,/PATTERN2/command' input_file從第一次被模式PATTERN1比對到的行到第一次被PATTERN2比對到的行執行指令command

三、sed常用選項及模式

    1、常用選項

    sed -i直接操作原檔案

sed -r使用擴充正規表達式

sed -n靜默模式,不列印模式空間中的内容,例如sed '1,3p' fstab會顯示所有檔案,其中前三行,顯示兩次,加了-n之後隻會顯示前三行

sed -e多腳本處理; 例如:sed -e 's/\<h\([a-zA-Z]*\)\>/H\1/g; -e 's/\(1..e\)\./\1r./g' test

2、常用模式

d删除指定行

p模式空間中的文本在處理之前,每一次都會先顯示:p,顯示,指定行會被顯示兩次

$表示最後一行

a \:在模式比對到的行後面添加新内容 ; 例如sed '/#/a \this is a comment line.\n(換行符)' binary.sh

r FILE:讀檔案追加到别的檔案後面;例如:sed '2r /root/test' binary.sh在檔案binary.sh的第二行加上/root/test的内容

i \:在模式比對到的行前面添加新内容

w FILE:把這個檔案中模式所比對到的行寫到另一個檔案中;例如:sed -n '/[a-z]/w /tmp/sev.out' binary.sh

s :s/PATTERN/string/ 例如:s@/dev/vo10/root@/dev/sda2/

   g:比對全文

   i:忽略大小寫

   s/PATTERN/&string/在前面比對到的PATTERN後面加上string例:sed 's/\(1..e\)\./\1r./g' test 隻比對前面的1..e并且其後加上r.

n:讀取下一行,以覆寫方式  例如:sed -n '1n;p' test一次讀進來

N:讀取下一行,以追加方式 例如:sed 'N;p' test(在模式空間中兩行做一行處理)sed 'N;N' test(三行在一起)兩行合并為一行sed 'N;s/\n/ /g' newfile

g:将保留白間中的内容複制到模式空間,覆寫的方式

G:将保留白間中的内容複制到模式空間,追加的方式 例如:sed 'G' test每隔一行空一行  

h:将模式中的模式空間複制到保留白間,覆寫的方式 例如: sed -n 'h;n;G;h;n;G;p' test 

H:将模式中的模式空間複制到保留白間,追加的方式

b label:跳轉 例如:sed -n '3b;p'跳轉到第三行 seb '\#b' test跳過有#号的行 

    例:sed '/#/b para.s/grep/GREP/g;:para; y/abc/ABC/' binary對于有#号的行從para.s跳轉到:para,是以s/grep/GREP不執行,沒有#号的行才執行

    x:将保留白間和模式空間對調  

t label: 測試:前面的s指令執行成功就跳轉到标記位置

sed
下一篇: vim指令總結