sed編譯器被稱為流編輯器。可以在處理資料之前基於事先提供的一組規則遍歷資料流。可以包括文字檔案中的搜尋關鍵字全域性替換、區域性替換(特定行,和標記)、刪除行、新增或追加行;處理單個字元的轉換
命令(y);執行效率極高。
sed命令格式
sed options program file
options常用的可以包括如下表:
選項描述
-f讀取行後劃分欄位的分隔符
-f執行sed檔案中的命令集合
-n禁止sed編譯器的輸出,對比p命令
-v var = value
設定變數並設定預設值
-e執行多個命令
sed命令實踐舉例如下:
管道命令向sed命令中傳遞資料
echo 'hello,world' | sed 's/hello,world/hello,jerry/' # 此處將輸出hello,jerry
說明:s命令可以對匹配字串進行替換,hello,jerry替換hello,world
2. sed指定多條命令
sed -e 's/hello/hi/; s/nihao/how are you/' data.txt
說明:sed將分別執行兩條語句,多條命令之間需要使用『;』進行分割,也可以使用** 次命令列 **。
3. sed執行檔案命令,檔案的命名常以.sed結尾
sed -f multicommands.sed data.txt # 此時將順序執行multicommands中的函式
說明:sed將分別執行.sed檔案中的命令,.sed中的命令按行填寫
s命令預設替換每一行的第乙個匹配的字串,s命令具有以下的替換標記,其書寫命令如下:
sed 's/hello/hi/** flag **' data.txt
選項
描述數字i
替換行中的第i個位置的元素
g替換匹配的資料
p輸出替換之前的行
w file
將替換結果寫入到檔案中
說明:不同的flag可以組合使用,一般組合使用g和w替換標記。
** 特別提示重點(替換特殊字元,如』』) **
sed 's!/bin!/sbin!' data.txt # 使用感嘆號來分隔模式
** 數字形式 **
sed '1s!/bin!/sbin!' data.txt # 替換確定行,本例為第一行
sed '2,3s!/bin!/sbin!' data.txt # 替換範圍,本地為[2,3]行
sed '2,$s!/bin/!sbin!' data.txt # 從某一行開始的所有行,從第2行開始
** 文字形式 **
以文字方式的命令列格式sh /pattern/command/
sed -n '/hello/s/hello/hi/p' data.txt # 輸出匹配行替換之前的資料
** 命令組合 **
組合命令需要使用{}來進行處理,如下:
sed '3' data.txt
刪除指定行
sed '1d' data.txt # 刪除第一行,其中1可替換為範圍1,3或1,$刪除所有
刪除匹配模式的行
sed '/hello 1d' data.txt # 刪除匹配模式中的第一行
刪除某區間裡的行
sed '/1/ /2/d' data.txt # 刪除第一行到第二行
說明:/1/第乙個不是開啟命令,/2/d關閉行刪除
sed '1i\abc' data.txt # 在第一行前插入一行新的資料為abc
y命令是唯一乙個可以處理單個字元的命令。其主要命令格式如下:
[address]y/inchars/outchars/
inchars 和outchars會一一對映,如果長度不同,會產生一條錯誤資訊。錯誤資訊如下:
每天30分鐘吊打Linux常用命令專題 正規表示式
bre模式 純文字匹配 從日誌檔案中查詢spring boot啟動埠,假設日誌檔案為nohup.log,可以使用一下命令進行匹配。sed n port s p nohup.outcat nohup.out grep port s 此時輸出的結果會標紅,建議使用此方式特殊字元 linux正規表示式中主...
《每天堅持30分鐘》摘錄
第一章只有學習才能成功 1 有 學習意識 時,學習慾望最大。這時集中學習的話,往往收效很大。2 每天學習30分鐘持續5年,比每天學習5個小時堅持一周的效果要高出10倍。3 三天打魚兩天曬網也可以,每年能反覆50次的話,一年的學習時間會有150天。4 初次學習的知識要在1週後進行複習,過2週後進行第2...
每天30分鐘,實現自我增值
如果你問我,人們常常做事半途而廢是不是因為缺乏耐心。我認為,那是因為人們都太急功近利,習慣於眼前短暫的滿足。事實上,做任何事情都要付出時間。理查德 布蘭森不是一夜成為百萬富翁的 麥當娜也不是一夜成名的 碧鹹姆更不是一出生就是足球巨星。其實,想要自我增值很簡單。為什麼?因為大多數人只是在想而不行動。大...