背景
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 >> 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,如需轉載請自行聯系原作者