文本三劍客之sed

文本處理三劍客之sed

sed 本身也是一個管線命令,是一個(流|行)編輯器! 而且 sed 還可以將數據進行取代、刪除、新增、擷取特定行等等的功能。工作模式是從源文件中一次讀取一行,存儲到sed自己的內存中進行處理,如果模式被匹配到就可以編輯并且輸出到標準輸出,如果沒有被匹配到則直接輸出到標準輸出。

    sed [OPTION]… script [input-file]…

    常用選項:

    -n:不輸出模式空間中的內容至屏幕;

    -e:多點編輯;可以同時指定多個編輯命令

    [root@ali ~]# cat /etc/fstab  |sed -e 's/^#[[:space:]]*//g' -e '/^UUID/d'

    -f:/path/to/sed_script_file 每行一個編輯命令;

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

    -i:原處編輯:直接編輯原文件(危險命令)

        提示:任何情況下修改和刪除之前先備份


    地址定界

        (1)空地址:對全文進行處理;

        (2)單地址:

        #:指定行;

        /pattern/:被次模式所匹配到的每一行;

        (3)地址范圍

        #,#:

        #,+#:

        #,/pat1/

        /pat1,/pat2

        $:最后一行

        (3)步進:~

        1~2:所有奇數行

        2~2:所有偶數行


    編輯命令:

        d:刪除

        [root@ali ~]# nl /etc/fstab |sed '1,5d'

         5 # Accessible filesystems, by reference, are maintained under '/dev/disk'

         6 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

         (刪除了第一到第五行的內容)

         p:顯示模式空間中的內容

         a:\text:在行后面追加文本"text",支持使用\n實現多行追加;

         i:\text:在行后面插入文本"text",支持使用\n實現多行插入;

         c\text:把匹配刀到的行替換為此處指定的文本“text”

         w/path/to/somefile:保存模式空間匹配到行至指定的文件中

         r/path/from/somefile:讀取指定文件的內容至當前文件被模式匹配到的行后面;實現文件合并        

         =:為模式匹配到的行打印行號

         !:條件取反(語法順序 地址定界!編輯命令)   

         s///:查找替換,其分隔符可自行指定,常用的有s@@@,s@@@

         替換標記:

         g:全局替換

         w/path/to/somefile:將替換成功的結果保存至指定文件中

        p:顯示替換成功的行


    高級編輯命令和示例

        h:把模式空間中的內容覆蓋至保持空間中

        H:把模式空間中的內容追加至保持空間中

        g:把保持空間中的內容覆蓋至模式空間中

        G:把保持空間中的內容追加至模式空間中

        x:把模式空間中的內容與保持空間中的內容互換

        n:覆蓋匹配到的行的下一行至模式空間中

        N:追加匹配到的行的下一行至模式空間中

        d:刪除模式空間中的行

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

        示例:

         sed -n 'n;p'file:顯示偶數行

         sed '1!G;h;$!d'file:逆序顯示文件內容,tac表示不服

         sed '$!d' file:取出最后一行;tail -n1 表示不服

         sed '$!N;$!D' file:取出文件最后兩行;tail -n2表示不服

         sed '/^$/d;G' file:刪除原有的所有空白行后,而后為所有的非空白行添加一個空白行

         sed 'n;d' file:顯示奇數行;

         sed 'G' :在原有的每行后方添加一個空白行


原創文章,作者:M20-1馬星,如若轉載,請注明出處:http://www.www58058.com/32244

(0)
M20-1馬星M20-1馬星
上一篇 2016-08-10 13:58
下一篇 2016-08-10 13:59

相關推薦

  • 設計模式(五)適配器模式Adapter(結構型)

    1. 概述:          接口的改變,是一個需要程序員們必須(雖然很不情愿)接受和處理的普遍問題。程序提供者們修改他們的代碼;系統庫被修正;各種程序語言以及相關庫的發展和進化。         例子1:iphone…

    Linux干貨 2015-06-25
  • 億級用戶下的新浪微博平臺架構

    序言     新浪微博在2014年3月公布的月活躍用戶(MAU)已經達到1.43億,2014年新年第一分鐘發送的微博達808298條,如此巨大的用戶規模和業務量,需要高可用(HA)、高并發訪問、低延時的強大后臺系統支撐。 微博平臺第一代架構為LAMP架構,數據庫使用的是MyIsam,后臺用的是php,緩存為Memcache。 隨著應用規?!?/p>

    2015-03-16
  • N23_第1周博客作業

    1、描述計算機的組成及其功能。     根據馮·諾依曼體系計算機有中央處理器、主存儲器、輸入/輸出三個子系統組成。 1.中央處理器 CPU(Central Processing Unit)用于數據運算。CPU有控制單元、算數邏輯單元、寄存器組組成。 (1)控制單元:控制各個子系統操作 (2)算數邏輯單元:對數據進行邏輯、移位和算數運算 邏…

    Linux干貨 2016-09-19
  • 定時任務應用示例

    定時任務應用示例 1.每4小時執行一次對/etc目錄的備份,備份至/backup目錄中,保存的目錄名為形如etc-201504020202 mkdir /backup crontab -e * */4 * * * cp -ar /etc/ /backup/etc-$(date +%Y%m%d%H%M) 2.每周2,4,6備份/var/log/messages…

    Linux干貨 2017-08-06
  • Linux網絡屬性配置—iproute命令家族

    ip命令: show / manipulate routing, devices, policy routing and tunnels ip [ OPTIONS ] OBJECT { COMMAND | help } OBJECT := { link | addr | route | netns  } ip  OBJECT: ip li…

    Linux干貨 2016-12-04
  • Linux介紹

    Linux簡介 Linux是一種自由和開放源代碼的類UNIX操作系統。該操作系統的內核由林納斯·托瓦茲在1991年10月5日首次發布。在加上用戶空間的應用程序之后,成為Linux操作系統。Linux也是自由軟件和開放源代碼軟件發展中最著名的例子。只要遵循GNU通用公共許可證,任何個人和機構都可以自由地使用Linux的所有底層源代碼,也可以自由地修改和再發布。…

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