多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > linux sed用法

linux sed用法

來源:程序員人生   發布時間:2015-03-27 08:12:22 閱讀次數:2638次

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

sed是1個很好的文件處理工具,本身是1個管道命令,主要是以行動單位進行處理,可以將數據行進行替換、刪除、新增、選取等特定工作,下面先了解1下sed的用法
sed命令行格式為:
         sed [-nefri] ‘command’ 輸入文本        

經常使用選項:
        
-n∶使用安靜(silent)模式。在1般 sed 的用法中,所有來自 STDIN的資料1般都會被列出到螢幕上。但如果加上 -n 參數后,則只有經過sed 特殊處理的那1行(或動作)才會被列出來。
        -e∶直接在指令列模式上進行 sed 的動作編輯;
        -f∶直接將 sed 的動作寫在1個檔案內, -f filename 則可以履行 filename 內的sed 動作;
        -r∶sed 的動作支援的是延伸型正規表示法的語法。(預設是基礎正規表示法語法)
        -i∶直接修改讀取的檔案內容,而不是由螢幕輸出。
       

經常使用命令:
        a   ∶新增, a 的后面可以接字串,而這些字串會在新的1行出現(目前的下1行)~
        c   ∶取代, c 的后面可以接字串,這些字串可以取代 n1,n2 之間的行!
        d   ∶刪除,由于是刪除啊,所以 d 后面通常不接任何咚咚;
         i   ∶插入, i 的后面可以接字串,而這些字串會在新的1行出現(目前的上1行);
         p  ∶列印,亦行將某個選擇的資料印出。通常 p 會與參數 sed -n 1起運作~
         s  ∶取代,可以直接進行取代的工作哩!通常這個 s 的動作可以搭配正規表示法!例如 1,20s/old/new/g 就是啦!

舉例:(假定我們有1文件名為ab)
     刪除某行
     [root@localhost ruby# sed '1d' ab              #刪除第1行 
     [root@localhost ruby] # sed '$d' ab              #刪除最后1行
     [root@localhost ruby] # sed '1,2d' ab           #刪除第1行到第2行
     [root@localhost ruby] # sed '2,$d' ab           #刪除第2行到最后1行

  顯示某行
.    [root@localhost ruby# sed -n '1p' ab           #顯示第1行 
     [root@localhost ruby] # sed -n '$p' ab           #顯示最后1行
     [root@localhost ruby] # sed -n '1,2p' ab        #顯示第1行到第2行
     [root@localhost ruby] # sed -n '2,$p' ab        #顯示第2行到最后1行

  使用模式進行查詢
     [root@localhost ruby] # sed -n '/ruby/p' ab    #查詢包括關鍵字ruby所在所有行
     [root@localhost ruby] # sed -n '/$/p' ab        #查詢包括關鍵字$所在所有行,使用反斜線屏蔽特殊含義

  增加1行或多行字符串
     [root@localhost ruby]# cat ab
     Hello!
     ruby is me,welcome to my blog.
     end
     [root@localhost ruby] # sed '1a drink tea' ab  #第1行后增加字符串"drink tea"
     Hello!
     drink tea
     ruby is me,welcome to my blog. 
     end
     [root@localhost ruby] # sed '1,3a drink tea' ab #第1行到第3行后增加字符串"drink tea"
     Hello!
     drink tea
     ruby is me,welcome to my blog.
     drink tea
     end
     drink tea
     [root@localhost ruby] # sed '1a drink tea or coffee' ab   #第1行后增加多行,使用換行符
     Hello!
     drink tea
     or coffee
     ruby is me,welcome to my blog.
     end

  代替1行或多行
     [root@localhost ruby] # sed '1c Hi' ab                #第1行代替為Hi
     Hi
     ruby is me,welcome to my blog.
     end
     [root@localhost ruby] # sed '1,2c Hi' ab             #第1行到第2行代替為Hi
     Hi
     end

  替換1行中的某部份
  格式:sed 's/要替換的字符串/新的字符串/g'   (要替換的字符串可以用正則表達式)
     [root@localhost ruby] # sed -n '/ruby/p' ab | sed 's/ruby/bird/g'    #替換ruby為bird
   [root@localhost ruby] # sed -n '/ruby/p' ab | sed 's/ruby//g'        #刪除ruby

     插入
     [root@localhost ruby] # sed -i '$a bye' ab         #在文件ab中最后1行直接輸入"bye"
     [root@localhost ruby]# cat ab
     Hello!
     ruby is me,welcome to my blog.
     end
     bye


數據的搜索并顯示

搜索 /etc/passwd有root關鍵字的行

復制代碼
nl /etc/passwd | sed '/root/p' 1 root:x:0:0:root:/root:/bin/bash 1 root:x:0:0:root:/root:/bin/bash 2 daemon:x:1:1:daemon:/usr/sbin:/bin/sh 3 bin:x:2:2:bin:/bin:/bin/sh 4 sys:x:3:3:sys:/dev:/bin/sh 5 sync:x:4:65534:sync:/bin:/bin/sync ....下面疏忽
復制代碼

如果root找到,除輸出所有行,還會輸出匹配行。

 

使用-n的時候將只打印包括模板的行。

nl /etc/passwd | sed -n '/root/p' 1 root:x:0:0:root:/root:/bin/bash

 

數據的搜索并刪除

刪除/etc/passwd所有包括root的行,其他行輸出

nl /etc/passwd | sed '/root/d' 2 daemon:x:1:1:daemon:/usr/sbin:/bin/sh 3 bin:x:2:2:bin:/bin:/bin/sh ....下面疏忽 #第1行的匹配root已刪除

 

 

 

數據的搜索并履行命令

找到匹配模式eastern的行后,

搜索/etc/passwd,找到root對應的行,履行后面花括號中的1組命令,每一個命令之間用分號分隔,這里把bash替換為blueshell,再輸出這行:

nl /etc/passwd | sed -n '/root/{s/bash/blueshell/;p}'  1  root:x:0:0:root:/root:/bin/blueshell

如果只替換/etc/passwd的第1個bash關鍵字為blueshell,就退出

nl /etc/passwd | sed -n '/bash/{s/bash/blueshell/;p;q}' 1 root:x:0:0:root:/root:/bin/blueshell

最后的q是退出。

 

數據的搜索并替換

除整行的處理模式以外, sed 還可以用行動單位進行部份數據的搜索并取代。基本上 sed 的搜索與替換的與 vi 相當的類似!他有點像這樣:

sed 's/要被取代的字串/新的字串/g'

 

先視察原始信息,利用 /sbin/ifconfig 查詢 IP

[root@www ~]# /sbin/ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:90:CC:A6:34:84 inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::290:ccff:fea6:3484/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 .....(以下省略).....


本機的ip是192.168.1.100。

 

將 IP 前面的部份予以刪除

[root@www ~]# /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g' 192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0

接下來則是刪除后續的部份,亦即: 192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0

將 IP 后面的部份予以刪除

[root@www ~]# /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g' | sed 's/Bcast.*$//g' 192.168.1.100

 

多點編輯

1條sed命令,刪除/etc/passwd第3行到末尾的數據,并把bash替換為blueshell

nl /etc/passwd | sed -e '3,$d' -e 's/bash/blueshell/' 1 root:x:0:0:root:/root:/bin/blueshell 2 daemon:x:1:1:daemon:/usr/sbin:/bin/sh

-e表示多點編輯,第1個編輯命令刪除/etc/passwd第3行到末尾的數據,第2條命令搜索bash替換為blueshell。

 

 

直接修改文件內容(危險動作)


sed 可以直接修改文件的內容,沒必要使用管道命令或數據流重導向! 不過,由於這個動作會直接修改到原始的文件,所以請你千萬不要隨意拿系統配置來測試! 我們還是使用下載的 regular_express.txt 文件來測試看看吧!

利用 sed 將 regular_express.txt 內每行結尾若為 . 則換成 !

[root@www ~]# sed -i 's/.$/!/g' regular_express.txt

 

利用 sed 直接在 regular_express.txt 最后1行加入『# This is a test』

[root@www ~]# sed -i '$a # This is a test' regular_express.txt

由於 $ 代表的是最后1行,而 a 的動作是新增,因此該文件最后新增『# This is a test』!

sed 的『 -i 』選項可以直接修改文件內容,這功能非常有幫助!舉例來講,如果你有1個 100 萬行的文件,你要在第 100 行加某些文字,此時使用 vim 可能會瘋掉!由于文件太大了!那怎辦?就利用 sed 啊!透過 sed 直接修改/取代的功能,你乃至不需要使用 vim 去修訂!

 

參考 http://vbird.dic.ksu.edu.tw/linux_basic/0330regularex_2.php#sed

       http://www.cnblogs.com/stephen-liu74/archive/2011/11/17/2245130.html


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 日韩中文字幕在线观看视频 | 久久成人永久免费播放 | 国产精品免费αv视频 | 在线观看亚洲一区 | 404毛片 | 在线成人小视频 | jlzzjlzz亚洲大全 | 亚洲h视频在线 | 大香伊蕉在人线国产75视频 | 国产成人精品亚洲一区 | 欧美日韩一级片在线观看 | 在线高清国产 | 久久精品国产第一区二区 | 精品一区二区三区四区五区 | 好吊色永久免费视频大全 | 最新中文字幕日本 | 久久久久久一级毛片免费无遮挡 | 亚洲国产欧美目韩成人综合 | 亚洲精品推荐 | 欧美最猛性xxxxx图片 | 亚洲一区二区三区四 | 色在线网站 | 亚洲欧美日韩中文字幕在线一区 | 日本www在线| 手机在线观看视频 | 亚洲伊人成综合成人网 | 精品国产福利片在线观看 | 禁视频网站在线观看漫画 | 69毛片| 网址黄| 欧美监狱性暴一级毛片 | 日本国产中文字幕 | 国产成人免费片在线观看 | 青青草国产免费国产是公开 | 热灸灸这里只有精品 | 欧美成人一区二区三区在线视频 | 成年香蕉大黄美女美女 | 亚洲一区二区三区影院 | 欧美另类极品videosbest视 | 波多野结衣高清videossex | 一区二区三区欧美 |