sed是一種流編輯器,能夠完美的配合正規表示式使用。處理時,把當前處理的行儲存在臨時緩衝區中,稱為「模式空間」(pattern space),接著用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往螢幕。接著處理下一行,這樣不斷重複,直到檔案末尾。檔案內容並沒有改變,除非你使用重定向儲存輸出。sed主要用來自動編輯乙個或多個檔案,可以將資料行進行替換、刪除、新增、選取等特定工作。
sed的使用方式有兩種:
#sed的命令格式
sed[options]
'command' file(s)
;#sed的指令碼格式,即將command寫入scriptfile中
sed[options] -f scriptfile file(s)
;
常用的options
command之定位範圍
sed在沒有給定的範圍時,缺省會處理所有行,一旦給點範圍則只會將範圍內的行放入模組空間中,等待處理。
sed支援以下幾種範圍定位
#: 指定行,其中$特指最後一行;
/regexp/:任何能夠被regexp所匹配到的行;
%regexp%:同上,只不過換作%為regexp邊界符;
|%regexp%|:匹配時忽略字元大小寫;
startline,endline:行範圍指定
num1,num2:從num1行到num2行
#,/regexp/:從#行開始,到第一次被/regexp/所匹配到的行結束,中間的所有行;
/regexp1/,/regexp2/:從第一次被/regexp1/匹配到的行開始,到第一次被/regexp2/匹配到的行結束,中間的所有行;
#,+n:從#行開始,一直到向下的n行;
first~step:指定起始行,以及步長; 1~2表示 1,3,5,7,9……行
conmmand之處理操作
#替換文字中的字串:
sed's/book/books/'
file
#-n選項和p命令一起使用表示只列印那些發生替換的行:
sed -n 's/test/test/p'
file
#直接編輯檔案選項-i,會匹配file檔案中每一行的第乙個book替換為books
sed -i 's/book/books/g'
file
#刪除空白行:
sed'/^$/d'
file
#刪除檔案的第2行:
sed'2d'
file
#刪除檔案的第2行到末尾所有行:
sed'2,$d'
file
#刪除檔案最後一行:
sed'$d'
file
#刪除檔案中所有開頭是test的行:
sed'/^test/'d file
#已匹配字串標記&
echo this is a test line |
sed's/\w\+/[&]/g'
[this]
[is]
[a][test]
[line]
#匹配字串分組
echo aaa bbb |
sed's/\([a-z]\+\) \([a-z]\+\)/\2 \1/'
bbb aaa
#在example中所有包含test的行都被寫入file裡:
sed -n '/test/w file' example
#將 this is a test line 追加到 以test 開頭的行後面:
sed'/^test/a\this is a test line'
file
#i\命令 將 this is a test line 追加到以test開頭的行前面:
sed'/^test/i\this is a test line'
file
文字三劍客 sed
sed是linux中支援正規表示式的流編輯器 作用 修改和替換文字 sed擁有兩個兩個空間,分別是pattern space和hold space pattern space是處理資料的地方 注意 每處理一行資料後,模式空間就會清空 hold space是臨時存放資料的地方 模式空間 pattern...
Linux 文字三劍客之 sed
linux 系統中一切皆檔案。檔案是個文字。可以讀 可以寫,如果是二進位制檔案,還能執行。在使用linux的時候,大都是要和各式各樣檔案打交道。熟悉文字的讀取 編輯 篩選就是linux系統管理員的必備技能 文字處理工具 grep awk sed,本篇主要講sed sed行編輯命令。用來將資料進行選取...
Linux shell文字三劍客之sed的使用
sed 能夠對文字檔案進行增刪改查等操作。sed 擁有兩個緩衝區,活躍模式空間 active pattern space 與輔助保持空間 auxiliary hold space 簡稱為活躍區和暫存區,且這兩個緩衝區預設都為空。sed 的基本操作只需要用到活躍區,sed的高階操作需要活躍區與暫存區的...