sed語句

sed命令
  Linux文本處理三劍客 之 sed
  sed stream EDite
    做爲行編輯器,對文本進行編輯(以行爲單位進行編輯)
    注意:sed編輯文件,卻不改變原文件;

  sed的工做原理:
    指定一個文本文件,依次讀取文本文件中每行的內容,讀取到模式空間中(PATTERN SPACE),在模式空間中進行文本匹配(正則表達式),對匹配後的內容進行修改(替換、刪除、打印、修改、保存等)正則表達式

  用法:
    sed [OPTION]... {script-only-if-no-other-script} [input-file]...
    sed [參數] 「sed本身獨立的用法格式的語句」[文本文件]編輯器

  常見選項
    -n 拒絕默認顯示
    -r 指定使用擴展的正則表達式
      匹配IP
      一、全部的 \ 都不要 二、 | 或者
    -e script for while if
    -f 指定腳本文件
    -l 指定文本換行的長度?
    -i 直接修改文件內容(不要使用)

  地址定界方式
    一、直接匹配數值
      sed -n '5p' 文件
    二、 d~步長
      sed -n '1~3p' 文件
    三、$ 指定行尾
      sed -n '10,$p' 文件
    四、/正則/
      /正則1/,/正則2/
        sed -n '/k\{5,\}/,$p' abc
        sed -n '/\(fd\)\+/,+2p' abc ? 正則寫在前面就沒有問題,寫在後面就有問題
        sed -n '
    五、0,addr
      addr 能夠爲 數字/$/正則表達式
      sed -n '0,/k\{5,\}/p' abc
    六、addr,+N
      配置addr行到,addr後N行
      sed -n '/fd/,+5p' abc學習

    **常見命令
      p print 打印(默認在屏幕上顯示出來) 建議和 -n 一塊兒使用;
      c 替換
        sed "/aaa/c \A" a
      d 刪除
        sed "/aaa/d" a
        sed "1,3d" a
      n N 讀取/添加 模式匹配到的行的下一行內容,再對其進行操做
      w 保存文件內容到一個新的文件
        sed "/patthen/w 新的文件名" 原來的文件名
        sed "/k/w /tmp/aabbcc" abc
      *s* 文本內容替換,默認替換模式空間匹配到的第一項;
        語法格式: s/pattern/字符串/
          中間的 / 能夠替換爲任意一個特殊字符 例如:s### s@@@ s%%%%
        g 所有
        \1 \2 和正則表達式的分組相同,實現反向應用;
          指定某一個匹配項進行修改替換
        & 調用前面(pattern)匹配的內容
          sed "s/r..t/&er/g" 文件
        w
        p

  sed的高級應用
    模式空間 -- hold space"佔有空間"
    之後本身取學習spa

練習:
刪除/boot/grub/grub.conf文件中全部空白開頭的行行首的空白字符;
  sed 's/^[[:space:]]\+//g' /boot/grub/grub.conf
刪除/etc/fstab文件中全部以#開頭,後面至少跟一個空白字符的行 的行首的#和空白字符;
  sed 's/^#[[:space:]]\+//g' /etc/fstab
給定一個目錄,取出其目錄名
  echo "/etc/passwd" | sed 's/[^/]\+$//'
給定一個目錄,取出其文件名
  echo "/etc/passwd" | sed 's#^/.*/\(.*\)##3d

  /var/log/message
  sed '/[^/]\+/'

  dirname -- 取出文件路徑的路徑部分
  basename -- 取出文件路徑的文件名部分ip

相關文章
相關標籤/搜索