歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux教程

Linux sed命令的基本使用

sed(Stream Editor):流編輯器

一次只讀取一行

模式空間

1、sed語法:

sed [option] "script" FILE...

2、選項:

-n:靜默模式,不輸出模式空間中的內容

-r:使用擴展的正則表達式

-f:/path/to/sed_script_file:指定sed腳本文件

-e 'script' -e 'script' :指定多個編輯腳本

-i:直接修改讀取的文件內容,而不是輸出到終端

3、編輯命令:

d:刪除

p:打印

i \text:匹配內容上面增加text內容

a \text:匹配內容西面增加text內容

r /path/to/somefile:在制定位置把另外一個文件的內容插入進來

w /path/to/somefile:將符合條件的所有行保存至指定得文件中

= :顯示符合條件行的行號

例如:# sed -n '/^UUID/=' /etc/fstab

s///:查找條件可以使用模式,但要替換的內容不行

4、地址定界:

startline,endline:1,3

/pat1/,/pat2/

/pattern/

用法:

sed [options] 'addr1[,addr2]編輯命令' FILE ...

sed [options] "addr1[,addr2]編輯命令" FILE ...

5、正則表達式:

基本的:

字符:

    .

    []

    [^]

次數:

    *

    \?

    \{m,n\}

錨定:

    ^

    $

    \<,\b

    \>,\b

分組:

    \(\)

引用:

    \1,\2,...

擴展:

字符:

    .

    []

    [[:lower:]],[[:punct:]],[[:alnum:]]

次數:

    *

    ?

    +

    {m,n}

錨定:

    ^

    $

    \>,\b

    \<,\b

或:

    a|b

分組:

    ()

引用:

    \1,\2,...

sed '地址定界s@查找條件@替換文本@'

6、修飾符:

g:global,全局替換

i:ignore-case,不區分字符大小寫

7、例子:

1、將selinux的enforcing改成disabled

# sed 's@^SELINUX=enforcing@SELINUX=disabled@g' /etc/selinux/config

2、刪除/etc/init.d/functions文件中的空白行

# sed '/^$/d' /etc/init.d/functions

3、刪除/etc/inittab文件中位於行首的#號

# sed 's@^#@@g' /etc/inittab

4、刪除/etc/rc.d/rc.sysinit文件夾中以#後跟至少一個空白字符開頭的行的行首的#和空白字符

# sed 's@^#[[:space:]]\{1,\}@@g' /etc/rc.d/rc.sysinit

5、刪除/boot/grub/grub.conf文件中行首的空白字符

# sed 's@^[[:space:]]\{1,\}@@' /boot/grub/grub.conf

6、取出一個文件路徑的目錄名稱

# echo /etc/sysconfig/network/ | sed 's@[^/]\{1,\}/\?$@@'

Copyright © Linux教程網 All Rights Reserved