Linux之Sed详解
1、Sed功能與語法結構
Sed是Stream Editor(流編輯器)縮寫,是操作、過濾和轉換文本內容的強大工具。常用功能有替換、刪除、新增、選取特定行等功能。
處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有 改變,除非你使用重定向存儲輸出。Sed主要用來自動編輯一個或多個文件;簡化對文件的反復操作;編寫轉換程序等。
[root@www ~]# sed [-nefr] [動作] 選項與參數: -n :使用安靜(silent)模式。在一般 sed 的用法中,所有來自 STDIN 的數據一般都會被列出到終端上。但如果加上 -n 參數后,則只有經過sed 特殊處理的那一行(或者動作)才會被列出來。 -e :直接在命令列模式上進行 sed 的動作編輯; -f :直接將 sed 的動作寫在一個文件內, -f filename 則可以運行 filename 內的 sed 動作; -r :sed 的動作支持的是延伸型正規表示法的語法。(默認是基礎正規表示法語法) -i :直接修改讀取的文件內容,而不是輸出到終端。動作說明: [n1[,n2]]function n1, n2 :不見得會存在,一般代表『選擇進行動作的行數』,舉例來說,如果我的動作是需要在 10 到 20 行之間進行的,則『 10,20[動作行為] 』function: a :新增, a 的后面可以接字串,而這些字串會在新的一行出現(目前的下一行)~ c :取代, c 的后面可以接字串,這些字串可以取代 n1,n2 之間的行! d :刪除,因為是刪除啊,所以 d 后面通常不接任何咚咚; i :插入, i 的后面可以接字串,而這些字串會在新的一行出現(目前的上一行); p :列印,亦即將某個選擇的數據印出。通常 p 會與參數 sed -n 一起運行~ s :取代,可以直接進行取代的工作哩!通常這個 s 的動作可以搭配正規表示法!例如 1,20s/old/new/g 就是啦!1、新增與刪除
為了對比首先使用nl命令顯示前10行
注意:sed 后面接的動作,一定要用 單引號 ‘ ’括起來
[root@localhost tmp]#nl passwd | sed '3,$d' 刪除第3行到最后一行$ 表示行尾
在第二行后面增加一行,即增加的出現在第三行,加上learning sed
[root@localhost tmp]#nl passwd | sed '2a learning sed'注意動作里面的解析,a表示在當前行的下一行,i表示在當前行的上一行
[root@localhost tmp]#nl passwd | sed '2i learning sed ,the next line'
注意,如果增加兩行怎么辦呢?
在需要換行的地方加上 \ 即可,如下
2、替換
將第2~5行的內容替換為:Number of 2~5
[root @localhost tmp]#nl passwd | sed '2,5c Number of 2~5'通過此方法可以將整行的數據進行替換,當然sed工具還有其他功能,比如查看功能,可以通過head -n 10或者tail -n 10進行查看,sed可以簡單的直接取出想要的那幾行
注意這里一定要加上-n,如果不加-n,則會重復輸出
此外,sed可以以行為單位,進行數據查找并替換
sed 's/要替換的字符串/新字符串/g'
利用grep 選取一行數據,過濾的信息如下
現在想把192.168.1.111之前的部分刪除掉,因此
這里相當于使用空格替換了inet addr:
如果將Ip后面的部分刪除掉
因此要去掉空白行和注釋行,即以#開頭的行
[root @localhost tmp]#grep -v '^$' re.txt | grep -v '^#'添加標簽
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的Linux之Sed详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VMware 虚拟机 linux执行 i
- 下一篇: Linux之grep