shell腳本-sed命令

sed命令--流編輯器正則表達式

1.工做原理編輯器

  指定一個文本文件,依次讀取文本文件中每一行的內容,讀取到模式空間(pattern space)中,在模式空間中進行文本匹配(使用正則表達式),對匹配後的內容進行修改(替換、刪除、打印、修改和保存)spa

2.常見選項3d

  -r 指定使用擴展正則表達式
    -n 禁止自動打印到空間模式
    -e 接腳本語句
    -f 指定腳本文件
    -l 指定文本換行的長度
    -i 直接修改文件內容(須要慎重使用) 字符串

3.地址定界原理

(1)直接匹配數值
     示例:sed -n '5p' 文件名        #打印文件中內容的第五行
(2)d~ 步長       
     示例:sed -n '1~3p' 文件名    #打印文件中內容從第1行開始以3爲步長打印,就是打印第1,4,7,11.....行擴展

  擴展:sed -n '1p;3p' 文件名   #打印文件內容中的第一行和第三行sed

(3)$  指定行尾
     示例:sed -n '10,$p' 文件名     #打印文件內容從第10行到最後一行
(4)/正則/
    /正則1/,/正則2/
    示例:sed -n '/k\{5,\}/,$p' 文件名  #打印文件中匹配k這個字符至少5次的字符並輸出配置

(5)0,addr
   addr 能夠爲 數字/$/正則表達式
   示例:sed -n '0,/k\{5,\}/p' abc     語法

(6)addr,+N    
    配置addr行到,addr後N行
    示例:sed -n '/fd/,+5p' abc
4.常見命令

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

5.練習

   (1)刪除/boot/grub/grub.conf文件中全部空白開頭的行行首的空白字符;
        sed 's/^[[:space:]]\+//g' /boot/grub/grub.conf 

   (2) 刪除/etc/fstab文件中全部以#開頭,後面至少跟一個空白字符的行   的行首的#和空白字符;
        sed 's/^#[[:space:]]\+//g' /etc/fstab

   (3)給定一個目錄,取出其目錄名
        echo "/etc/passwd"  |  sed 's/[^/]\+$//'

   (4)給定一個目錄,取出其文件名        echo "/etc/passwd" | sed 's#^/.*/\(.*\)##

相關文章
相關標籤/搜索