在學習shell腳本sed命令時覺得很難理解,然後就看了一下ed的使用說明,這個編輯器真特麼不好用, 難用歸難用,瞭解下其基本用法其實還是很簡單的。
轉自:http://blog.chinaunix.net/uid-9525959-id-2001556.html
ed 編輯器是 Linux 操作系統下最簡單的文本編輯器。它是以行爲單位對文件進行編輯不像 MS-DOS 系統下的 edit 那樣是以整個屏幕框架爲單位對文件進行編輯的。
ed編輯器有兩個狀態:命令行狀態和編輯狀態。前者接收輸入的ed命令也是默認啓動狀態,後者對文件以行爲單位進行編輯,下面開始學習。
**新建一個文件testNew:
*方法1,先指定文件名,輸入過程如下:
$ls
$ed testNew
testNew: No such file or directory <==此處是輸出,表示一個不存在的文件。
w
0 <==此處是輸出,表示寫了0個字符。
q
$ ls
testNew <==此處是輸出,可見多了一個新的空文件。
這裏,w表示寫命令,q退出,後面會提到。如果沒有w那麼q之後也不會建立新的文件。
*方法2,寫時再指定名字,輸入過程如下:
$ls
testNew <==此處是輸出,只有剛纔新建的文件。
$ed
w
? <==此處是輸出,?表示有問題,或命令不識別或別的,此處是缺少文件名。
w
? <==此處是輸出,同上。
w testNew2
0 <==此處是輸出,表示寫了0個字符。
q
$ls
testNew testNew2 <==此處是輸出,可見多了一個新的空文件testNew2。
這裏,因爲是一個新文件,所以如果一直w且沒輸入文件名的話,會一直提示,直至你指定了一個文件名。如果在w testNew2之前按q將直接退出,這樣也不會建立這個新文件了。
**
**編輯已存在的文件:
*編輯文件testNew
$ed testNew
0 <==此處是輸出,表示讀了0個字符。
這裏,默認進入的是命令狀態,你可以輸入任何命令進行編輯文件。按q退出。
*命令行狀態常用命令:
a <==在文件的末尾添加新內容。
i <==在文件的最後一行之前插入新內容。
o <==把文件輸入的最後一行(不論是原來存在的或者插入的)替換成新內容。
. <==退出編輯文件模式進入命令行模式(注意:此時並沒有退出 ed 編輯器)。
w <==保存文件,如果指定一個名稱表示另存爲的意思,這就不改變當前文件了。
q <==退出 ed 編輯器,如果沒有w則提示?,再次q就非保存退出了。
Q <==相當強制退出,無論保存與否。
**
*新建一個文件並編輯的流程舉例:
$ ed
a <==輸入a告訴 ed 我要編輯新文件
My name is QuietHeart. <==輸入第1行內容
And I love ed very much. <==輸入第2行內容
. <==輸入.返回 ed 的命令行狀態
i <==輸入i告訴 ed 我要在最後一行之前插入內容
I am 25. <==輸入,將“I am 25.”插入“My name is ...”和“And I love...”間.
. <==輸入.返回 ed 的命令行狀態
c <==輸入c告訴 ed 我要替換最後一行輸入內容
I am 25 years old. <==輸入,將“I am 25.”替換成“I am 25 years old.”
.w <==輸入,一個誤操作,結果成了輸入了。
q <==輸入,由於前面一個誤操作,結果成了輸入了。
. <==輸入.,這才返回 ed 的命令行狀態,而不是前面.w
w testNew <==輸入,將文件命名爲“testNew”保存(如果已存在文件,只需要敲入 w否則會覆蓋)
72 <==這裏是輸出,表示寫入的字符數。
q <==輸入q完全退出 ed 編輯器
下面,我們來看看剛剛新建的文件的內容:
$ cat testNew
輸入之後,輸出如下:
My name is QuitHeart.
I am 25 years old.
.w
q
And I love ed very much.
這裏,我幾乎都用到了前面給出的常用命令,我們可以瞭解ed最最簡單的使用了,後面再說一些其它實用的命令。
常用的命令
*打印所有行:
%p
*打印所有行並且顯示行號:
%n
*打印當前行:
.p
*打印當前行並且顯示行號:
.n
*跳到第3行:
3
*顯示並切換到下一行:
+
下兩行則++
*顯示並切換到上一行:
-
上兩行則--
*退出:
q
這裏如果沒有保存則第一次退不出去,再q就退出但沒有保存。
*強制退出:
Q
不會保存。