麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 系統 > Unix > 正文

Unix sed流編輯器簡介 帶你入門sed

2024-09-08 18:01:04
字體:
來源:轉載
供稿:網友

本教程我們來講講Unix下的一個非交互式的流編輯器sed介紹,主要包括sed是什么,sed工作機制等Unix sed理論知識,下一篇我們來講實用.

已經看了一段時間的Linux Shell編程了,也能完成一些基本的使用,為了加深理解,恰好看到了The Unix School的一個sed&awk教程,不是簡單的命令參數堆積,而是一個相當實用的系列,因此,希望能在幾天內完成翻譯.翻譯過程不會逐字翻譯,會穿插一些注釋,包括自己的一些理解和其他的一些引用,作為開篇,簡單說一下sed的工作機制,對后面的理解會有很大幫助.

sed是什么:

sed是一個非交互式的流編輯器(stream editor),所謂非交互式,是指使用sed只能在命令行下輸入編輯命令來編輯文本,然后在屏幕上查看輸出,而所謂流編輯器,是指sed每次只從文件(或輸入)讀入一行,然后對該行進行指定的處理,并將結果輸出到屏幕(除非取消了屏幕輸出又沒有顯式地使用打印命令),接著讀入下一行,整個文件像流水一樣被逐行處理然后逐行輸出(via Walk in Mindfields).

sed工作機制:

sed維護兩個緩沖區,pattern space和hold space,命令開始執行之前都為空.

pattern space緩沖區用于臨時保存每次讀取的一行的內容,大部分的匹配和替換等等操作都是針對pattern space中的內容進行的,因此不會對輸入文件有任何影響,而hold space則作為后備緩沖區使用,除非指定了一些特殊的命令(例如D刪除命令),否則pattern space中的內容會在處理完一行之后清空,但hold space中的內容在處理完每一行時不會被刪除.

也就是說pattern space相當于我們的內存,hold space相當于硬盤,處理的時候在內存里,處理過的就放回硬盤,這是我的理解,有一點點不恰當,但是因此一些概念會比較好理解.

具體來說,可以大致分為以下幾步.

1.首先,從標準輸入流讀取一行,移除換行符,然后存入pattern space中.

2.執行指定的命令,每個命令都有一個可選的地址,可以是行號,也可能是一個正則表達式匹配,這個地址作為一個執行命令前的測試,指定了需要對那些行進行操作,當前行只有匹配的情況下才會執行命令.

3.當指定所有的命令都執行完了之后,pattern space內容就被處理過了,sed默認會將pattern space中的內容打印到標準輸出中,移除的換行符也會打印出來,本行操作完成.

4.然后sed會讀取下一行的內容,再次執行相同的操作,直到行尾.

基本上最基礎的理論就差不多了,主要是這個工作機制比較重要,后面從示例中慢慢加深理解.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产一极毛片 | av色先锋| 日日爱影院 | 视频一区二区三区免费观看 | 亚洲激情91 | 毛片毛片 | 九九福利视频 | 成人宗合网 | 亚洲日韩中文字幕一区 | 国产一级免费不卡 | 国产精品久久久久久238 | 精品一区二区亚洲 | av在线免费电影 | 色猫av| 九九热精品在线 | 国产免费一区二区三区最新不卡 | 91久久久国产精品 | 综合国产在线 | 91精品国产综合久久婷婷香 | 美国一级黄色毛片 | 国产无限资源在线观看 | 国产成人网 | 黄色免费影片 | 91视频久久| 成年免费大片黄在线观看岛国 | 加勒比色综合 | 亚洲精品aaaaa | bt 自拍 另类 综合 欧美 | 国产91免费看 | www.国产一区.com | 久久久久免费精品 | 久久露脸国语精品国产91 | 国产精品视频导航 | 男女无套免费视频 | 国产精品18久久久久久久 | av在线观| 一级一级一级一级毛片 | 黄色成人av在线 | 国产免费观看电影网站 | 亚洲国产精品一 | 欧美三区在线 |