Linux文字處理命令三劍客之 sed

2021-10-08 03:04:25 字數 4164 閱讀 7409

sed主要用來自動編輯乙個或者多個檔案,簡化對檔案的反覆操作,編寫轉換程式等!

sed是一種流編輯器。處理時,把當前處理的行儲存在臨時緩衝區,稱為「模式空間」,接著用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往到螢幕,接著處理下一行,這樣不斷重複,知道檔案末尾。

除非緩衝區的內容被刪除了,或者在輸出時被取消,否則所有被處理的行都將會輸出到螢幕。輸出完一行後,模式空間被清空,並存入新的一行等待處理。

所以,sed是按行處理的,而awk是按列處理!!!!

緩衝區:每行內容都會放入緩衝區,也稱「模式空間」,pattern space

sed

[-hnvi]

[-e][-f

][input-files]

選項說明-h:幫助資訊

-n:僅顯示script處理的結果

-v:版本資訊

-i:修改檔案

-e:指定script來處理輸入的文字檔案,可指定多個-e選項

-f:指定script檔案來處理輸入的文字檔案

動作說明

a:新增,a後面可以跟字串,會新增在下一行

i:新增在上一行,和a恰恰相反

c:取代,c後面可以跟字串,這些字串可以取代n1 n2之間的行內容

d:刪除,刪除匹配行

p:列印,通常可以和引數-n一起使用

s:替換,可以和正規表示式一起使用1,20s/old/new/g

=:顯示行號

h:拷貝莫板塊的內容到記憶體中的緩衝區

h:追加莫板塊的內容到記憶體中的緩衝區

g:獲得記憶體緩衝區中的內容,並替代當前模版塊中的文字

g:獲得記憶體緩衝區中的內容,並追加到當前模版塊中

n:讀取下乙個行輸入,用下乙個命令處理新的行

n:追加下乙個輸入行到模版塊後面,並在2者之間嵌入乙個新行

q:退出sed

前面的工作選項使用較多、較頻繁,後面幾個可以使用到時在看。

1、刪除第4行到最後一行

nl /etc/passwd |

sed -e '4,$d'

2、列印5-7

sed -n '5,7p' /etc/passwd
3、查詢以root字串開頭的行

sed -n '^root/p' /etc/passwd
4、多點編輯,刪除從第3行到最後一行,並把bash替換為hello

sed -e '3,$d' -e 's/bash/hello/g' /etc/passwd
5、列印奇數/偶數行

奇數行

sed -n 'p;n' /etc/passwd

sed -n '1~2p' /etc/passwd

偶數行

sed -n 'n;p' /etc/passwd

sed -n '2~2p' /etc/passwd

1~2p:從第1行開始,每隔2行輸出

6、列印匹配字串的下一行

grep -a 1 ***x /etc/passwd

sed -n '/***x/' /etc/passwd

awk'/***x/' /etc/passwd

7、顯示包含hhh的行到包含omc的行之間的行

sed -ne '/hhh/,/omc/p' log.txt
9、匹配root後,讀入/etc/passwd內容在匹配內容後面

sed

'/root/ r /etc/passwd' log.txt

r:讀命令,將乙個檔案中的內容追加到當前檔案的特定位置

w:寫命令,同上,真實寫入,不用加-i選項

10、將匹配test的行追加到最後一行

sed -e '/test/h' -e '$g' log.txt
h:匹配到test之後,h命令會複製乙份將其放入緩衝區

g:取出緩衝區的內容,然後把它放回模式空間,並追加到當前行的末尾

11、將包含hello行中的o替換為abc

sed -n '/hello/s/o/abc/g' log.txt
其他:

sed命令還可配合find命令一起使用

find ./ -type f -exec sed -i 's/aaa/***/g'

\;

^:行開頭

$:行結尾

.:任意乙個飛換行字元

*:零個或多個字元

:指定範圍內的字元。如/[ab]cc/可以匹配acc或者bcc

[^]:不在指定範圍內的字元

\(..\):匹配子串。s/\(love\)able/\1rsloveable替換為lovers1表示第一組括號

&:保留搜尋字元,用來替換其他字元。s/love/*&*/結果為*love*

\<:匹配單詞開頭

\>:匹配單詞結尾。/love\>/包含以love結尾的單詞

x\:重複字元x出現m次。/a\/表示包含3a的行

x\:至少m

x\m~n

sed被譽為linux下的文字處理三劍客之一,也是三劍客的第二個,它具有很強的文字處理能力,有些時候不一定要寫很複雜的程式才能完成日誌分析,其實用很簡單的linux命令就能完成需求,而且效率非常高。sed就是其中之一。

文字處理三劍客命令

一 sed 一 sed 正則定位 sed egon p a.txt 這一行只能有egon這個字元 root localhost sed 1,egon p bug 列印第一行首次匹配到 egon 的行 p 列印 s gi 替換 sed 1,3s egon egon 檔案 sed egon s egon...

Linux文字處理三劍客

grep 作用 文字搜尋工具,根據使用者指定的 模式對目標檔案逐步進行匹配檢查,列印匹配到的行 grep root etc passwd grep命令選項 grep user etc passwd v 顯示不被pattern 匹配的行 e 僅顯示匹配到的字串 grep user etc passwd...

linux文字處理三劍客

常用引數 v 顯示不能夠被匹配到的行 i 忽略大小寫字元 o 僅顯示匹配到的字串 q 靜默模式,不輸出任何資訊 a 後 行 b 前 行 c 前後各 行 e 使用ere,相當於egrep常用引數 n 只列印模式匹配的行 e 直接在命令列模式上進行sed動作編輯,此為預設選項 f 將sed的動作寫在乙個...