天天看點

sed學習

sed學習

1、sed 是一種線上編輯器,它一次處理一行内容。處理時,把目前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接着用sed指令處理緩沖區中的内容,處理完成後,把緩沖區的内容送往螢幕。接着處理下一行,這樣不斷重複,直到檔案末尾。檔案内容并沒有改變,除非你使用重定向存儲輸出。Sed主要用來自動編輯一個或多個檔案;簡化對檔案的反複操作;編寫轉換程式等。

2、Sed [-hnV][-e<script>][-f<script檔案>][文本檔案]

選項與參數:

-n :使用安靜(silent)模式。在一般 sed 的用法中,所有來自STDIN 的資料一般都會被列出到終端上。但如果加上 -n 參數後,則隻有經過sed 特殊處理的那一行(或者動作)才會被列出來。

-e :直接在指令列模式上進行 sed 的動作編輯;

-f :直接将 sed 的動作寫在一個檔案内,-f filename 則可以運作 filename 内的 sed 動作;

-r :sed 的動作支援的是延伸型正規表示法的文法。(預設是基礎正規表示法文法)

-i :直接修改讀取的檔案内容,而不是輸出到終端。

3、動作說明:[n1[,n2]]function

n1, n2 :不見得會存在,一般代表『選擇進行動作的行數』,舉例來說,如果我的動作是需要在 10 到 20 行之間進行的,則『 10,20[動作行為] 』

function:

a :新增, a 的後面可以接字串,而這些字串會在新的一行出現(目前的下一行)~

c :取代, c 的後面可以接字串,這些字串可以取代 n1,n2 之間的行!

d :删除,因為是删除啊,是以 d 後面通常不接任何咚咚;

i :插入, i 的後面可以接字串,而這些字串會在新的一行出現(目前的上一行);

p :列印,亦即将某個選擇的資料印出。通常 p會與參數 sed -n 一起運作~

s :取代,可以直接進行取代的工作哩!通常這個s 的動作可以搭配正規表示法!例如 1,20s/old/new/g 就是啦!

本文轉自 YAOvYAO 51CTO部落格,原文連結:http://blog.51cto.com/yaoyao1314520/1983962