日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux之Sed详解

發布時間:2025/3/20 linux 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 :不見得會存在,一般代表『選擇進行動作的行數』,舉例來說,如果我的動作是需要在 1020 行之間進行的,則『 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行


[root@localhost tmp]#nl passwd | sed '2,5d'刪除passwd文件中的第2~5行,如下:


注意: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详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。