shell學習十三天 sed案例分析

2021-07-03 06:53:14 字數 2779 閱讀 1539

sed的使用案例

使用sed

操作/etc/passwd,

最好複製乙份

(cp /etc/passwd /tmp),

操作tmp

下的passwd(

其實不用

,因為在一般情況下

sed只是修改了輸出結果

,不會改變檔案本身

,除非要求這麼做).

以行為單位的新增/刪除

要求:將

/etc/passwd

的內容列出並且列印行號

,同時刪除

2~5行.

做法:cat /etc/passwd | sed 『2,5d』

sed的動作是』2,5d』(動作需要放在單引號之間)

nl命令在

linux系統中用來計算檔案中行號。nl 可以將輸出的檔案內容自動的加上行號!其預設的結果與 

cat -n 

有點不太一樣, 

nl 可以將行號做比較多的顯示設計,包括位數與是否自動補齊 

0 等等的功能。 

只刪除第二行:

nl /etc/passwd | sed 『2d』

刪除第3

行到最後一行

cat -n /etc/passwd | sed 『3,$d』 

在第二行後(

就是在第三行

)加上」i am fine」字樣

cat -n /etc/passwd | sed 『2a i am fine』

如果要在第二行前面

nl /etc/passwd | sed 『2i i am fine』

如果是要增加兩行以上,在第二行後面加入兩行字,例如『hello

』與『how are you』

nl /etc/passwd | sed 『2a hello\

>how are you』

每一行之間都必須要以反斜槓(\)

來進行新行的新增

,所以上面的例子

,我們可以發現在第一行的最後面就有 

\ 存在。

(再輸入的是會需要注意

,單引號不要一起輸完).

以行為單位的替換與現實

將第2-5

行的內容替換成」hahaha」

nl /etc/passwd | sed 『2,5c hahaha』

通過這個方法,

我們就可以替換整行資料了.

僅列出/etc/passwd

檔案的5-7行

cat -n /etc/passwd | sed -n 『5,7p』

可以透過這個 sed 

的以行為單位的顯示功能, 就能夠將某乙個檔案內的某些行號選擇出來顯示。

資料的搜尋與顯示

搜尋/etc/passwd

中有關/root

關鍵字的行

nl /etc/passwd | sed 『/root/p』

思考:為什麼會輸出所有行的情況?

使用-n

的時候將只列印包含模板的行。

nl /etc/passwd | sed -n 『/root/p』

資料的搜尋與刪除

刪除/etc/passwd

所有包含

root的行,

其他行輸出

nl /etc/passwd | sed 『/root/d』 

資料的搜尋並執行命令

搜尋/etc/passwd,

找到root

對應的行,執行後面花括號中的一組命令,每個命令之間用分號分隔,這裡把

bash

替換為blueshell

,再輸出這行:

nl /etc/passwd | sed -n '/root/'

如果只替換/etc/passwd

的第乙個

bash

關鍵字為

blueshell

,就退出

nl /etc/passwd | sed -n '/bash/'    1  

最後的q

是退出。

資料的搜尋並替換

除了整行的處理模式之外,sed

還可以用行為單位進行部分資料的搜尋並替換

.基本上

sed的搜尋與替換與

vi相當的類似.

sed 『s/要被取代的字串

/新的字串

/g』先通過/sbin/ifconfig eth0

檢視本機的

ip位址

,我的是

(192.168.199.5)

將ip前面部分予以刪除

/sbin/ifconfig eth0 | grep 'inet addr'|sed 's/^.*addr://g'

將ip後面部分予以刪除

/sbin/ifconfig eth0 | grep 'inet addr'|sed 's/^.*addr://g' | sed 's/bcast.*$//g'

即可得到ip

多點編輯

一條sed命令,刪除

/etc/passwd

第三行到末尾的資料,並把

bash

替換成hahaha.

nl /etc/passwd | sed -e 『3,$d』 -e 『s/bash/hahaha/g』

注意:每天命令前面都加入了

-e選項

直接修改檔案內容

最好別使用,

如果使用需要加入乙個

-i選項

例如在最後一行插入hahaha

nl /etc/passwd | sed -i 『$i hahaha』

學習Python 第十三天

二叉樹 一,名詞 根邊 樹葉 葉子 沒有兒子 兄弟 具有相同父親的節點 祖父和孫子 路徑路徑的長 深度 從根到該點 高 從該點到葉子 祖先 後裔 真祖先 真後裔 二,樹的實現 class treenode def init self,data,firstchild,nextsibling self....

Java學習第十三天

13.01 常見物件 stringbuffer類的概述 b stringbuffer和string的區別 13.02 常見物件 stringbuffer類的構造方法 b stringbuffer的方法 c 案例演示 13.03 常見物件 stringbuffer的新增功能 public string...

Linux 第十三天學習

一 服務程式apache ilnux系統的配置檔案 服務目錄 etc httpd 主配置檔案 etc httpd conf httpd.conf 資料目錄 var www html 訪問日誌 var log httpd access log 錯誤日誌 var log httpd error log ...