每日掌握乙個Linux命令 之 sed工具

2021-08-08 17:22:55 字數 1856 閱讀 2362

sed:全稱 stream editor,是乙個很好的檔案處理工具,本身是乙個管道命令,主要是以行為單位進行處理,可以將資料進行替換、刪除、新增、選取等特定工作。

用法:

sed [-nefr] [動作]

引數:-n : 安靜模式,在一般sed的用法中,所有來自stdin的資料一般都會被列出到螢幕上,但如果加上-n引數後,則只有經過sed特殊處理的那一行(或者操作)才會被列出來

-f : 直接將sed動作寫在乙個檔案內,-f filename 則可以執行filename內的sed操作

-r: sed 動作支援的是擴充套件型正規表示式的語法(預設是基礎正規表示式語法)

-i: 直接修改讀取的檔案內容,而不是由螢幕輸出

[動作]說明:

[n1[,n2]] funtion
n1,n2:定會存在,一般代表選擇進行動作的行數,例如,「10,20[動作行為]」 ,在第10行到20行之間進行

function:

c:change替換,c後可接字串,這些字串可以替換n1,n2之間的行

d: delete 刪除,後通常不接任何引數

p: print 列印,將某個選擇的資料列印出來,通常會與引數sed -n 一起執行

s: 替換,可以直接進行替換工作,通常這個s的動作可以搭配正規表示式

功能:1. 以行為單位的新增/刪除功能(不會修改原檔案)

使用動作引數: d、 a 、 i

nl /etc/passwd | sed '2,5d'   <== 刪除第2~5行
nl /etc/passwd | sed '2adrink tea'     <== 在第2行之後,新增新行,行的內容為「drink tea」
nl /etc/passwd  | sed  '2idrink tea'     <== 在第2行之前,插入新行,行的內容為「drink tea」

2. 以行為單位的替換與顯示功能(不會修改原檔案)

使用動作引數: c、p

nl  /etc/passwd | sed '2,5cno 2-5 lines'   <==  將第2~5行替換為 no 2-5 lines
nl /et/cpasswd | sed -n '2,5p'     <== 僅顯示/etc/passwd中的提2~5行,這裡要與-n一起執行,-n代表的是「安靜模式」

3. 部分資料的查詢並替換的功能(不會修改原檔案)  

基本替換格式:

sed 's/要被替換的字串/新的字串/g'

例如: /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g'     <== 將ip前面的部分予以刪除

4. 直接修改檔案內容(會修改原檔案,慎用)

使用  -i  引數

sed-i's/\.$/\!/g' regular_express.txt  <== 將regular_express.txt檔案內每一行結尾為'.' 的換成'!'

linux 每日乙個命令

編寫shell指令碼 hello.sh bin bash the first program echo e e 1 34m hello world e 0m 執行指令碼賦予執行許可權,直接執行 chmod 755 hello.sh hello.sh 通過bash呼叫執行指令碼 bash hello....

每日乙個Linux命令 free

free m 以m為單位來顯示記憶體數值,預設時free的單位為kb 姑且我們把上圖看成乙個陣列 free output,以下簡稱fo 首先,第1行為列名,total 物理記憶體總量,used 已經使用掉的記憶體,free 剩餘可用記憶體,shared 程序共享的記憶體占用 其值總是0 buffer...

每日乙個Linux命令(四) tr命令

本原創文章屬於 linux大棚 部落格。部落格位址為 tr指令從標準輸入裝置讀取資料,經過字串轉譯後,輸出到標準輸出裝置 帶有最常用選項的tr命令格式為 tr c d s string1 to translate from string2 to translate to input file 這裡 ...