sed

sed

  • Stream EDitor, 行編輯器
  • sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有改變,除非使用重定向存儲輸出。
  • Sed主要用來自動編輯一個或多個文件,簡化對文件的反復操作,編寫轉換程序等
  • sed 默認支持標準輸入,可結合 “ | ” ,標準輸入處理文本

用法:

sed [option]… ‘script’ inputfile…

  • 常用選項:

    • -n:不輸出模式空間內容到屏幕,即不自動打印
      -e: 多點編輯
      -f:/PATH/SCRIPT_FILE: 從指定文件中讀取編輯腳本
      -r: 支持使用擴展正則表達式
      -i:對原文件進行修改
      -i.bak: 備份文件并原處編輯
  • script: ‘地址定界編輯命令’

    • 地址定界:
      (1) 不給地址:對全文進行處理
      (2) 單地址:
      #: 指定的行
      /pattern/:被此處模式所能夠匹配到的每一行
      (3) 地址范圍:
      #,#
      #,+n : 從第#行開始,一直向下n行;
      /pat1/,/pat2/ :從第一次被/pat1/匹配到的行開始,到最后一次匹配到/pat2/的行結束;
      #,/pat1/ :從第#行開始,到第一次匹配到/pat1/的行結束;
      (4) first~step:指定起始行,以及步長
      1~2 奇數
      2~2 偶數行

    • 編輯命令:

      • d: 刪除模式空間匹配的行
        p: 顯示模式空間中的內容
        a [ \ ]text:在指定行后面追加文本(text),支持使用\n實現多行追加
        i [ \ ]text:在行前面插入文本,支持使用\n實現多行追加
        c [ \ ]text:替換行為單行或多行文本;其中是整行替換
        w /path/somefile: 保存模式匹配的行至指定文件
        r /path/somefile:讀取指定文件的文本至模式空間中匹配到的行后
        =: 為模式空間中的行打印行號
        !:模式空間中匹配行取反處理
        s///:查找替換,支持使用其它分隔符,s@@@,s###

        • 替換標記:
          g: 行內全局替換
          p: 顯示替換成功的行
          w /PATH/TO/SOMEFILE:將替換成功的行保存至文件中
  • 高級編輯命令

    • h: 把模式空間中的內容覆蓋至保持空間中
      H:把模式空間中的內容追加至保持空間中
      g: 從保持空間取出數據覆蓋至模式空間
      G:從保持空間取出內容追加至模式空間
      x: 把模式空間中的內容與保持空間中的內容進行互換
      n: 讀取匹配到的行的下一行覆蓋至模式空間
      N:讀取匹配到的行的下一行追加至模式空間
      d: 刪除模式空間中的行
      D:刪除當前模式空間開端至\n的內容(不再傳至標準輸出),放棄之后的命令,但是對剩余模式空間重新執行sed

      奇數行

      seq 10|sed -n ‘1~2p’
      seq 10|sed ‘2~2d’
      seq 10 |sed -n ‘2~2!p’
      seq 10 |sed ‘n;d’

      偶數行

      seq 10 |sed -n ‘n;p’

      取IP

      ifconfig eth0|sed -n 2p|sed -e ‘s/.r://’ -e ‘s/ B.//’
      ifconfig eth0|sed -e ‘s/.inet addr://’ -e ‘s/ B.//’ -n -e 2p
      ifconfig eth0|sed ‘2!d;s/^.r://;s/ .//’

      取基名

      echo /etc/sysconfig/network-scripts/ |sed -r ‘s@(^/.*/)([^/]+/?)@\2@’

      取目錄名

      echo /etc/sysconfig/network-scripts/ |sed -r ‘s@(^/.*/)([^/]+/?)@\1@’

      對/etc/fstab非#開頭的加注釋

      sed -r ‘s/(^[^#])/#\1/’ /etc/fstab
      sed -r ‘s/^[^#]/#&/’ /etc/fstab

      倒序

      seq 10 |sed ‘1!G;h;$!d’

      只保留最后兩行

      seq 10|sed ‘$!N;$!d’

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

(0)
ss
上一篇 2017-04-26 20:07
下一篇 2017-04-27 08:05

相關推薦

  • 文件、目錄練習

    將/etc/issue文件的內容轉換為大寫保存到/tmp/issue.out文件中: 將當前系統登錄用戶信息轉換為大寫后保存至/tmp/who.out文件中: 將/root/下文件列表,顯示成一行,文件名之間用空格隔開: file1文件的內容為“1 2 3 4 5 6 7 8 9 10”計算出所有數字的總和: 處理字符串“xt.,| 1 jr#!$mn 2 …

    Linux干貨 2016-08-05
  • Linux磁盤管理

    一、磁盤簡介 機械硬盤的組成部件主要有:盤片、機械手臂、磁頭與主軸馬達;盤片又可以細分為扇區(Sector)和磁道(Track),所有盤片的同一個磁道稱之為柱面(Cylinder) 目前主流的磁盤接口有SCSI、SATA、SAS、USB等 Linux一切皆文件,硬件設備也有對應的文件,linux訪問設備,其實就是訪問與其對應的文件系統接口 設備文件: &nb…

    Linux干貨 2016-06-01
  • 10月18日作業–hash,history

    1 生產環境發現一臺服務器系統時間產生偏差,造成服務異常,請幫忙校正。 1、使用ntpdate對時間進行同步,然后hwclock -w;并再建立Crontab每小時進行一次時間同步。 2 生產有一個數據同步腳本需要執行很長時間,怎樣做到無人值守,在管理工具退出的情況下,腳本依然能正常運行。 1、載光盤 2、進入/mnt/Packages 安裝共享screen…

    Linux干貨 2016-10-19
  • 文件管理類命令詳解

    文件管理類命令詳解 文件查看 cat 功能描述:連接文件并打印到標準輸出上 命令格式:cat [OPTION]… [FILE]… OPTION: -b 對所有非空白行編號 -n 給所有輸出行編號 -s 將連續多行空白行顯示為一行空白行 -E 在每一行行尾顯示$ FILE:可顯示多個文件,文件之間以空格分隔 舉例 將file1、file…

    Linux干貨 2017-07-09
  • 我的第一篇博客

        第二天,很早的來到,不知道做些什么,未來也l許很忙碌,希望能夠一直堅持,不管是難吃的飯菜,還是不良的作息,起碼做個對得起這四個半月的人吧…

    Linux干貨 2017-07-11
  • 啟動和內核管理2

    五、自制linux系統     分區并創建文件系統         fdisk /dev/sdb         分兩個必要的分區   &n…

    Linux干貨 2016-09-18
欧美性久久久久