linux-----shell高级编程----sed应用
? 背景
????sed是一個很好的文件處理工具,本身是一個管道命令,主要是以行為單位進行處理,可以將數(shù)據(jù)行進行替換、刪除、新增、選取等特定工作.
sed意為流編輯器(StreamEditor),在Shell腳本和Makefile中作為過濾器使用非常普遍,也就是把前一個程序的輸出引入sed的輸入,經(jīng)過一系列編輯命令轉(zhuǎn)換為另一種格式輸出。sed和vi都源于早期UNIX的ed工具,所以很多sed命令和vi的末行命令是相同的。
sed命令行格式為:?
????sed option 'script' file1 file2 ...
????sed option -f scriptfile file1 file2 ...
常用參數(shù):
| --version | 顯示sed版本 |
| --help | 顯示幫助文檔 |
| -n? | 取消默認輸出 |
| -e | 指定多個指令執(zhí)行 |
| -i | 修改文件內(nèi)容(默認不修改原文件內(nèi)容) |
| -r | 使用擴張正則表達式 |
輸出占位符
| a(append) | 追加 |
| i(insert) | 插入 |
| d(delete) | 刪除 |
| s(substitution) | 替換 |
| p(print) | 打印 |
主要的介紹了這么多,下面開始實踐(實踐中出真理)
????1. 顯示第二行
????原始數(shù)據(jù)
????
????
????此時我們發(fā)現(xiàn) [bbbbb.....bbb] 多輸出一行,證明2p打印了第二行, 此時我們發(fā)現(xiàn)原始數(shù)據(jù)也打印了,不符合題意.
?
???
? ?此時加上 [ -n ]參數(shù), 精確只打印第二行
?????2. 使用 -e 多條語句 輸出指定行的數(shù)據(jù)
????????原始數(shù)據(jù)
????????
????
[#23#sea@~?22:06:04]$?sed?-n?-e?'2p'?-e?'4p'?test.txt? ??
? ?3.?輸假設(shè)一個文本(test.txt)中有1-100行數(shù)據(jù),要求打印出20-30行數(shù)據(jù)
? ? 首先我們利用循環(huán)機制模擬出100行數(shù)據(jù)
[#24#sea@~?22:06:04]$?for?i?in?`seq?100`;?do?echo?$i?>>?test.txt?;?done???? ?利用wc -l 查看文件行數(shù)
[#25#sea@~?22:32:29]$wc?-l?test.txt????
????題目實現(xiàn)如下
????
注:sed 的功能不止如此,因時間和生產(chǎn)環(huán)境有限,更詳細的sed介紹文章將后續(xù)發(fā)布, 敬請關(guān)注.
????
轉(zhuǎn)載于:https://blog.51cto.com/lisea/1795754
總結(jié)
以上是生活随笔為你收集整理的linux-----shell高级编程----sed应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js数组的sort排序的原理和应用
- 下一篇: OpenCV学习笔记——Mat类型数据存