shell筆記_sed語句

sed命令正則表達式

       Linux文本處理三劍客 之 sed編輯器

       sed stream EDite學習

              做爲行編輯器,對文本進行編輯(以行爲單位進行編輯)spa

              注意:sed編輯文件,卻不改變原文件;3d

      

       sed的工做原理:ip

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

 

       用法:input

              sed [OPTION]... {script-only-if-no-other-script} [input-file]...it

              sed [參數] 「sed本身獨立的用法格式的語句」[文本文件]stream

 

       常見選項

              -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"佔有空間"

              之後本身取學習

 

       練習:

       刪除/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#^/.*/\(.*\)##

 

       /var/log/message   

              sed '/[^/]\+/'

             

              dirname --  取出文件路徑的路徑部分

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

相關文章
相關標籤/搜索