sed命令

今天,看鳥哥的私房菜,關於sed的用法如今作以下總結,也能夠當作是讀書筆記。學習sed的時候先忘掉其餘的內容,好比:cut。看完此博客將學會如下幾個用法:正則表達式

功能:以每行爲單位進行處理,對數據進行替換、刪除、新增等功能。學習

有兩個模式:模式空間(part)和spa

(1)如何在屏幕展現/etc/passwd的內容,可是不展現第二行到第五行的內容?首先,得明確sed只是展現在屏幕,並無將原文件的內容刪除,故此處用的是「展現」。3d

(2)如何在上例中的第二行中添加一行?添加兩行呢?blog

(3)如何整行替換呢?將上例的第二行到第五行換成其餘數據呢字符串

(4)如何在/sbin/ifconfig下只展現IP博客

(5)查看文件/etc/man.config,不展現#行和空行?io

若是以上5點都已經知道了,此博客就沒有瀏覽的必要了。ast

下面一一解答:讀書筆記

sed [option] [action]

(1)nl /etc/passwd |sed '2,5d'

能夠看出:

d:刪除,其後沒有跟任何參數

2,5:用  數字,數字  即  n1,n2  表示第幾行到第幾行。

'':一對單引號,必須是一對單引號,將sed以後全部須要的動做【即action】,用單引號必須括起來。

同理,單獨只去掉某一行如:第二行,則sed '2d'便可;其中,$表示最後一行,這樣,第二行到最後一行,則用sed '2,$d'便可。

那麼,刪除第二行到第五行用d,若是隻想展現第二行到第五行,怎麼作呢?

nl /etc/passwd | sed -n '2,5p'

其中,-n選項:是靜默模式若是不加-n,則會列出全部符合的行,並且sed匹配到的行重複列出,故使用-n,並同時使用p,將須要的內容展現在屏幕

p:打印,將選擇的數據印出,通常和-n同時使用

 

 

(2)nl /etc/passwd |sed '2a hello world'

a:是增長,是在指定行號的下一行新增,本例中是2,即第二行的下一行新增一行。空格後表示的是新增一行的內容。當須要新增好幾行數據時,直接按\便可,而後輸出所須要的字符串,如:

那要是在指定行的上一行新增多條字符串呢?

i:在指定行的上一行新增字符串

(3)nl /etc/passwd |sed '2,5c no 2-5number'

 

c:替換,後跟須要替換的字符串便可,相信可以看明白此操做。

(4)/sbin/ifconfig eth0|sed -n '2p'|sed -r 's/^.*inet addr://g'|sed -r 's/Bcast:.*$//g'

須要一步一步分析:

/sbin/ifconfig eth0|sed -n '2p':選出有IP地址的那一行

sed -r 's/^.*inet addr://g'

-r:表示使用正則表達式,也可省略不寫。

s/須要替換的字符串/替換後新的字符串/g:也就是將開頭到inet addr:這一段用空格替換

 sed -r 's/Bcast:.*$//g':一樣,這個語句是將Bcast以後的替換成空格。

(5)cat /etc/man.config|grep 'MAN'|sed 's/^#.*$//g'|sed  '/^$/d'

grep 'MAN':在文件中找到'MAN'的行;

sed 's/^#.*$//g':使用正則表達式將行首爲#的替換成空行

sed  '/^$/d':將空行直接刪除。^$表示空行(^表明行首,$表明行尾)。

相關文章
相關標籤/搜索