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/\1rs
,loveable
替換為lovers
。1
表示第一組括號
&
:保留搜尋字元,用來替換其他字元。s/love/*&*/
結果為*love*
\<
:匹配單詞開頭
\>
:匹配單詞結尾。/love\>/
包含以love
結尾的單詞
x\
:重複字元x
出現m
次。/a\/
表示包含3
個a
的行
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的動作寫在乙個...