天天看點

sed學習

sed:編輯器

sed:Stream EDitor,行編輯器;

用法:

sed [option]... 'script' inputfile...

script:

"位址指令"

常用選項:

-n:不輸出模式中的内容至螢幕;

-e:多點編輯;

-f /PATH/TO/SCRIPT_FILE:從指定檔案中讀取編輯腳本

-r:支援使用擴充正規表達式;

-i:原處編輯;

位址定界:

(1)不給位址:對全文進行處理;

(2)單位址:

#:指定的行;

/pattern/:被此處能夠比對到的每一行;

(3)位址範圍:

編輯指令:

d:删除      如:sed '1,10d' /etc/fstab  #1-10行内容不顯示

p:顯示模式空間中的内容    如:sed '/^UUID/p' /etc/fstab  #符合條件的又顯示了一次

n:僅列印比對的行   如:sed -n '/^UUID/p' /etc/fstab  #-n隻列印比對的,p和d正好相反,d是删除比對的

a \text:在行後面追加文本;支援使用\n實作多行追加;

i \text:在行前面插入文本;支援使用\n實作多行插入;

c \text:替換符合條件的行,為單行或多行文本

w /path/to/somefile:儲存模式空間中比對到的行至指定檔案中;

=:為模式空間中的行列印行号;

r /path/from/somefile:讀取指定檔案的文本流至模式空間中比對到的行的行後;

!:取反條件;

s///:支援使用其它分隔符,s@@@,s###   視訊39分鐘

替換标記:

g:行内全局替換;

p:如果替換成功,則顯示之;

w /PATH/TO/SOMEFILE:将替換成功的結果儲存至指定檔案中

[root@c6 ~]# sed '[email protected]@&er@g' /etc/passwd   #在root後面加er

rooter:x:0:0:rooter:/rooter:/bin/bash

視訊:46分鐘  52分鐘

練習1:删除/boot/grub/grub.conf檔案中所有以空白開頭的行行首的空白字元;

[root@c6 ~]# sed 's@^[[:space:]]\+@@' /tmp/grub.conf

練習2:删除/etc/fstab檔案中所有以#開頭,後面至少跟一個空白字元的行的行首的#和空白字元;

[root@c6 ~]# sed 's@^#[[:space:]]\+@@' /etc/fstab

練習3:echo一個絕對路徑給sed,取出其基名;

[root@c6 ~]# echo "/etc/sysconfig/" | sed 's@[^/]\+/\?$@@'

/etc/

進階編輯指令:62分鐘

h:把模式空間中的内容覆寫至保持空間中;

H:把模式空間中的内容追加至儲存空間中;

g:從保持空間取出資料覆寫至模式空間;

G:從保持空間取出内容追加至模式空間;

x:把模式空間中的内容與保持空間中的内容進行互換;

n:讀取比對到的行的下一行至模式空間;

N:追加比對到的行的下一行至模式空間;

d:删除模式空間中的行;

D:删除多行模式空間中的所有行;

sed -n 'n;p' FILE   72分鐘

sed '1!G;h;$!d' FILE  1!第一行除外

      本文轉自cix123  51CTO部落格,原文連結:http://blog.51cto.com/zhaodongwei/1851767,如需轉載請自行聯系原作者