sed命令用法
sed是一種流編輯器,它是文本處理中非常有用的工具,能夠完美的配合正則表達式使用,功能不同凡響。處理時,把當前處理的行存儲在臨時緩沖區中,稱為『模式空間』(pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有改變,除非你使用重定向存儲輸出。sed主要用來自動編輯一個或多個文件,簡化對文件的反復操作,編寫轉換程序等。
1.簡介
sed是非交互式的編輯器。它不會修改文件,除非使用shell重定向來保存結果。默認情況下,所有的輸出行都被打印到屏幕上。
sed編輯器逐行處理文件(或輸入),并將結果發送到屏幕。具體過程如下:首先sed把當前正在處理的行保存在一個臨時緩存區中(也稱為模式空間),然后處理臨時緩沖區中的行,完成后把該行發送到屏幕上。sed每處理完一行就將其從臨時緩沖區刪除,然后將下一行讀入,進行
處理和顯示。處理完輸入文件的最后一行后,sed便結束運行。sed把每一行都存在臨時緩沖區中,對這個副本進行編輯,所以不會修改原文件。
2.定址
定址用于決定對哪些行進行編輯。地址的形式可以是數字、正則表達式、或二者的結合。如果沒有指定地址,sed將處理輸入文件的所有行。
地址是一個數字,則表示行號;是“$"符號,則表示最后一行。例如:sed -n '$p' /etc/issue
3.命令與選項
sed命令告訴sed如何處理由地址指定的各輸入行,如果沒有指定地址則處理所有的輸入行。
3.1 sed命令
a/
在當前行后添加一行或多行。多行時除最后一行外,每行末尾需用“/”續行 -a,只是顯示,如果要真的更改文本,就要sed -i.bak '' 這樣就會出來一個帶bak格式的文件,這個文件是源文件
[root@entos74 app]#cat -n passwd.txt | sed '10,20a/ 11 adadadadadada '
c/
用此符號后的新文本替換當前行中的文本。多行時除最后一行外,每行末尾需用"/"續行
cat -n passwd.txt | sed '10c/XXXXXXXXXXXXXXXXXX'
i/
在當前行之前插入文本。多行時除最后一行外,每行末尾需用"/"續行
cat -n passwd.txt | sed '10i/XXXXXXXXXXXXXXXXXX'
d
刪除行 :ss -ntl |sed '1d' 刪除第一行
h
把模式空間里的內容復制到暫存緩沖區
H
把模式空間里的內容追加到暫存緩沖區
g
把暫存緩沖區里的內容復制到模式空間,覆蓋原有的內容
新聞熱點
疑難解答