Sed教程(一):简介、环境设置、工作流程
Sed表示流編輯器(Stream Editor)的縮寫。這是一個簡單但功能強大的工具,分析文本,并無縫地轉換它。 SED是在1973-1974年由貝爾實驗室的李E. McMahon開發。如今,它運行在所有主要的操作系統。
McMahon編寫了一個通用的面向行的編輯器,它最終成為sed。sed借用語法和ed編輯許多有用的功能。自成立開始,就對正則表達式有所支持。sed接受來自文件以及管道的輸入。此外,它也可以接受來自標準輸入的數據流的輸入。
sed是自由軟件由基金會(FSF)維護,它是由GNU/ Linux分發。因此,它通常被稱為GNU sed的。對于新手用戶,sed語法看起來神秘。但是,一旦熟悉了它的語法,就可以使用sed的幾行腳本解決許多復雜的任務。
sed典型用途
sed可以有許多不同的方式使用,例如:
- 文本替換
- 選擇性打印的文本文件
- 一個就地文本文件的編輯
- 文本文件的非交互式的編輯等等。
本章介紹如何在GNU/ Linux系統中設置sed環境。
安裝使用軟件包管理器
一般情況下,sed默認提供在大多數的GNU/ Linux發行版。使用該命令,以確定其是否存在于您的系統上。如果沒有,那么在基于Debian GNU/ Linux可以使用apt包管理器,如下所示安裝sed:
[root]# sudo apt-get install sed安裝后,確保sed可以通過命令行訪問。
[root]# sed --versio執行上面的代碼,會得到如下結果:
sed (GNU sed) 4.2.2 Copyright (C) 2012 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.htmll>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by Jay Fenlason, Tom Lord, Ken Pizzini, and Paolo Bonzini. GNU sed home page: <http://www.gnu.org/software/sed/>. General help using GNU software: <http://www.gnu.org/gethelp/>. E-mail bug reports to: <bug-sed@gnu.org>. Be sure to include the word "sed" somewhere in the "Subject:" field.同樣,基于GNU/Linux的RPM安裝sed,用yum包管理器,如下所示:
[root]# yum -y install sed安裝后,確保 sed 可以通過命令行訪問。
[root]# sed --version執行上面的代碼,會得到如下結果:
GNU sed version 4.2.1 Copyright (C) 2009 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. GNU sed home page: <http://www.gnu.org/software/sed/>. General help using GNU software: <http://www.gnu.org/gethelp/>. E-mail bug reports to:<bug-gnu-utils@gnu.org>. Be sure to include the word "sed" somewhere in the "Subject:" field.從源代碼安裝
由于GNU sed是GNU計劃的一部分,它的源代碼都可以免費下載。我們已經看到了如何使用軟件包管理器安裝sed?,F在,了解如何從源代碼安裝sed。
下面安裝適用于任何的GNU/Linux軟件,和大多數其他可自由使用的程序。下面是安裝步驟:
第1步 - 從一個真實的地方下載的源代碼。命令行實用程序wget服務于這個目的。
[root]# wget ftp://ftp.gnu.org/gnu/sed/sed-4.2.2.tar.bz2第2步 - 解壓縮和解壓下載的源代碼。
[root]# tar xvf sed-4.2.2.tar.bz2第3步 - 更改進入目錄并運行配置。
[root]# ./configure第4步 - 一旦成功完成,配置生成Makefile文件。編譯源代碼,使用 make命令。
[root]# make第5步 - 可以運行測試套件,以確保構建是干凈的。這是一個可選步驟。
[root]# make check第6步 - 最后,安裝sed實用工具。請確保有超級用戶的權限。
[root]# sudo make install我們已經成功編譯并安裝sed。通過執行 sed 命令,作如下驗證:
[root]# sed --version執行上面的代碼,會得到如下結果:
sed (GNU sed) 4.2.2 Copyright (C) 2012 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.htmll>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by Jay Fenlason, Tom Lord, Ken Pizzini, and Paolo Bonzini. GNU sed home page: <http://www.gnu.org/software/sed/>. General help using GNU software: <http://www.gnu.org/gethelp/>. E-mail bug reports to: <bug-sed@gnu.org>. Be sure to include the word "sed" somewhere in the "Subject:" field.
本章將解釋sed究竟如何工作的。要成為一個專家級的sed用戶,需要知道它的內部執行和結構。sed遵循一個簡單的工作流:讀取,執行和顯示。下圖描繪了工作流程。
讀取
sed從輸入流(文件,管道,或標準輸入)讀取,并將其存儲在其內部的緩沖模式稱為緩沖行。
執行
所有sed命令順序地對模式緩沖區使用。默認情況下,sed命令都適用于所有行(全局),除非指定行尋址。
顯示
sed發送(修改)的內容到輸出數據流。在發送數據后,模式緩沖器是空的。這個過程一直重復,直到文件被耗盡。
示例
讓我們創建一個文本文件quote.txt包含引用著名作家Paulo Coelho。
[jerry]$ vi quote.txt There is only one thing that makes a dream impossible to achieve: the fear of failure. - Paulo Coelho, The Alchemist為了了解sed的工作流程,讓我們使用sed顯示該文件的內容quote.txt。這個例子模仿cat命令。
[jerry]$ sed '' quote.txt當執行上面的代碼,就會產生下面的結果。
There is only one thing that makes a dream impossible to achieve: the fear of failure.在上面的例子中,quote.txt輸入文件名和在此之前,有一對單引號的暗示sed 命令。讓我們解讀此操作。
第一sed從輸入文件quote.txt讀取并將其存儲在它的模式緩沖區行。然后它適用sed關于模型緩沖區命令。在我們的例子中沒有sed 命令在那里,因此是對模式緩沖區未進行任何操作。最后刪除,并打印在標準輸出模式緩沖區中的內容。是不是很簡單?
在下面的例子中,sed 接受來自標準輸入流輸入。
[jerry]$ sed ''當執行上面的代碼,它會提示我們輸入從標準輸入一些文字。因此,讓我們進入一個文本行,如下所示:
There is only one thing that makes a dream impossible to achieve: the fear of failure.輸入該行后,當我們按下輸入產生以下結果:
There is only one thing that makes a dream impossible to achieve: the fear of failure.要從使用的sed會話退出,按下鍵盤上的?ctrl-D?(^D).
from: http://www.yiibai.com/sed/sed_useful_recipes.html
總結
以上是生活随笔為你收集整理的Sed教程(一):简介、环境设置、工作流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Shell教程(六):函数、联机帮助
- 下一篇: Sed教程(二):基本语法、循环、分支