sed的用法小結

sed的用法小結

sed主要用來自動編輯一個或多個文件;簡化對文件的反復操作;編寫轉換程序等
sed [OPTION]… ‘script’ [input-file] …

OPTION:

-n 不輸出模式空間中的內容至屏幕,僅顯示script處理后的結果
-e 多點編輯,eg: ~]# sed  -e  's@^#[[:space:]]*@@'   -e  '/^UUID/d'  /etc/fstab
-f 每行編輯一個命令
-r 支持使用擴展正則表表達式

地址定界:

(1)空地址:對全文進行處理
(2)單地址:
    #指定行
    /pattern/:被刺模式所匹配的到的每一行
(3)    地址范圍
    #,#:
    #,+#:
    #,/part1/
    /part1/,/part2/
    $:最后一行
(4)    步進:~
    1~2:所有奇數行
    2~2:所有偶數行

編輯命令:

d:刪除d后面通常不接任何東西
p:顯示模式空間的內容,通常 p 會與參數 sed -n 一起運行~
w: /PATH/TO/SOMEFILE:保存模式空間匹配到的行至指定的文件中
r  /PATH/FROM/SOMEFILE:讀取指定文件的內容至當前文件被模式匹配到的行后面;文件合并
s///:查找替換,其分隔符可自行指定,常用的有s@@@, s###等;
    g:全局替換;
    w /PATH/TO/SOMEFILE:將替換成功的結果保存至指定文件中;
    p:顯示替換成功的行;
a\test 追加,而這些字串會在新的一行出現(目前的下一行)
c\text取代,c后面可以接上字符串
i\text追加,而這些字串會在新的一行出現(目前的上一行)

練習:

刪除/etc/grub2.cfg文件中所有以空白字符開頭的行的行首的所有空白字符;
~]# sed  's@^[[:space:]]\+@@' /etc/grub2.cfg

刪除/etc/fstab文件中以#開頭的行的行首的#及#后面的所有空白字符
~]# sed  's@^#[[:space:]]*@@'  /etc/fstab

輸出一個絕對路徑給sed命令,取出其目錄,其行為類似于dirname
~]# echo "/var/log/messages/" | sed 's@[^/]\+/\?$@@'

將etc/fstab中的UUID替換成ABCD
~]# sed  's/UUID/ABCD/p' /etc/fstab

注 sed -i 可以直接修改原文件

[root@localhost ~]# vim test.txt
[root@localhost ~]# cat test.txt 
test
[root@localhost ~]# sed -i 'a\#This is a test' test.txt 
[root@localhost ~]# cat test.txt 
test
#This is a test

在要編輯一個超大的文本文件的時候,就可以不用vim打開再編輯了,直接用sed -i 就可以直接在指定行添加內容了!

原創文章,作者:N27_flypig,如若轉載,請注明出處:http://www.www58058.com/85283

(0)
N27_flypigN27_flypig
上一篇 2017-08-22
下一篇 2017-08-23

相關推薦

  • 編譯安裝dropbear

    ssh協議的另一個實現:dropbear 編譯安裝dropbear [root@centos6 ~]# tar xf dropbear-2013.58.tar.bz2  [root@centos6 ~]# cd dropbear-2013.58 [root@centos6&nbs…

    Linux干貨 2016-09-28
  • 邏輯卷的命令解析

    前言    lvm是logical volume manager(邏輯卷管理器)的簡稱,通過將若干個磁盤分區連接成一個整塊的卷組(volumegroup),形成一個存儲池,管理員可以在卷組上隨意創建邏輯卷(logicalvolumes),并進一步在邏輯卷組上創建文件系 統。管理員通過LVM可以方便的調整存儲卷組的大小,并且可以對磁盤存儲按…

    Linux干貨 2016-08-30
  • MySQL慢日志監控腳本實例剖析

    原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://nolinux.blog.51cto.com/4824967/1577326        公司線上的 MySQL 慢日志,之前一直沒有做好監控。趁著上周空閑,我就把監控腳本寫了下,…

    Linux干貨 2016-08-15
  • RAID+LVM詳解

                                        一.RAID篇 一.什么是RAID   磁盤陣列全名是『Redundant Arrays…

    Linux干貨 2016-09-07
  • 學習宣言

    新的一天開始了, 從今天起,正式開始Linux的系統學習, 對于基礎薄弱的我來說,是一個新的挑戰,而我接受這個挑戰。 在今后的日子里,一定會拼搏奮進,更上一層樓。 積土而為山,積水而為海, 定會一天比一天強,努力吧。

    Linux干貨 2016-10-24
  • 上古神器vim

    概述:     在之前的篇章中,我們介紹了一些文本的處理工具,如grep、sed、cut、sort等,但是那些工具的側重點都在于有了現成的文本之后,對現有的文本進行一定條件的加工處理后,滿足我們進一步對數據的要求。但是目前為止,還沒有接觸一款專業用來編輯文本的工具,本篇就來介紹一下Linux系統上自帶的專業用來文本編輯…

    Linux干貨 2016-08-10
欧美性久久久久