天天看點

linux----->shell進階程式設計----sed應用

  背景

    sed是一個很好的檔案處理工具,本身是一個管道指令,主要是以行為機關進行處理,可以将資料行進行替換、删除、新增、選取等特定工作.

sed意為流編輯器(StreamEditor),在Shell腳本和Makefile中作為過濾器使用非常普遍,也就是把前一個程式的輸出引入sed的輸入,經過一系列編輯指令轉換為另一種格式輸出。sed和vi都源于早期UNIX的ed工具,是以很多sed指令和vi的末行指令是相同的。

sed指令行格式為: 

    sed option 'script' file1 file2 ...

    sed option -f scriptfile file1 file2 ...

常用參數:

--version

顯示sed版本

--help

顯示幫助文檔

-n 

取消預設輸出

-e

指定多個指令執行

-i

修改檔案内容(預設不修改原檔案内容)

-r

使用擴張正規表達式

輸出占位符

a(append)

追加

i(insert)

插入

d(delete)

删除

s(substitution)

替換

p(print)

列印

主要的介紹了這麼多,下面開始實踐(實踐中出真理)

    1. 顯示第二行

    原始資料

<code>[</code><code>#20#sea@~ 22:06:04]$sed '2p' test.txt</code>

    此時我們發現 [bbbbb.....bbb] 多輸出一行,證明2p列印了第二行, 此時我們發現原始資料也列印了,不符合題意.

   此時加上 [ -n ]參數, 精确隻列印第二行

     2. 使用 -e 多條語句 輸出指定行的資料

        原始資料

<code>[</code><code>#23#sea@~ 22:06:04]$ sed -n -e '2p' -e '4p' test.txt</code>

   3. 輸假設一個文本(test.txt)中有1-100行資料,要求列印出20-30行資料

    首先我們利用循環機制模拟出100行資料

<code>[</code><code>#24#sea@~ 22:06:04]$ for i in `seq 100`; do echo $i &gt;&gt; test.txt ; done</code>

      利用wc -l 檢視檔案行數

<code>[</code><code>#25#sea@~ 22:32:29]$wc -l test.txt</code>

    題目實作如下

注:sed 的功能不止如此,因時間和生産環境有限,更詳細的sed介紹文章将後續釋出, 敬請關注.

      本文轉自asd1123509133 51CTO部落格,原文連結:http://blog.51cto.com/lisea/1795754,如需轉載請自行聯系原作者

繼續閱讀