ed Command list

ed は、sed の原型、スクリプトの中でも記載してデータを追加・変更・削除できる。
かなり使えるので、原始的のようだが、使い勝手が良く頼もしい存在である。

ed command


ed起動

ed テキストエディタ emacs から起動するシェルにて動作可能
ファイルを開くには

> ed file
コマンドモードと編集モードの区別がつきにくいので、
ed が起動後速やかに P を打つと *  が表示される。
* が表示されているときは、コマンドモードなので、コマンドを打つ

ed command


表示

*  1,5  p
1から5行目まで表示する pは省略可

*  23
23行目にジャンプ

* 1 , $ n
1から最終行まで行番号付きで表示する。

*  , n
*  1 , $ n と同じ
* , p または *,n と打てば早い
全てを表示

*   ; n
今の行から行末まで表示

カーソル移動

*  -   現在の行より1行戻る
*  -5   5行戻る
*  +   1行進む
*  +3   3行進む

キーワード

*  /grep   grep を含む行に移動 //で次の検索した行へ
*  ; p  または  * ; n  現在行から行末まで表示

* 1,$  g/keyword/n
データ中から keyword を含む行と行番号を表示

* 1,$  g/^[a-z]/n
行先頭がアルファベットの小文字ではじまる行と行番号を表示

ed command

削除

* 11,23d
11行目から23行目まで削除
なお、1文字削除はない。 行で削除する。

変更

* 11c
11行目をこれから入れるデータに変更する。

ed command

入力

*  a
文字入力 現在行の次に入力
. のみの行でコマンドに戻る
. 
* 

* i
現在行の前に挿入

ed command

検索・置換

* /word/ word を含む行を検索して移動。
つづけて同じ単語を検索するには
// と打つ
[例]
* /word/
wrde is word
* //
This word is

/word/n と打つと、word の行と行番号が表示される。//nでさらに検索してくれる。??nで逆順に検索
漢字でも検索可能

*  1,$  s/befor/after/g 1行目から最終行までのすべてのbeforをafterに置換
*  ,  s/befor/after/g 同上
*  ,  s/bfore/after/ 行の最初に出てくる1行1か所のみ置換


特定文字の変更 ただし、現在行の修正に限る。
* s/11/33/
11を33に変更
[例]
part11 is so
* s/11/01/
* p
part01 is so
* up 置換を元に戻す(u)表示(p)

複写

* 3,5t12 3行目から5行目までを、12行目+1行目に複写する。
* 3t12 3行目を12行目に複写する。

移動

* 1m5 1行目のデータを5行目に(現在の5行目の後ろに)移動
* 2,5m10 2行目のデータを10行目に移動

行の連結

* 12,13j 12行と13行のデータを連結する。
* 12,15j 12行から15行までのデータを連結する。

1 abc
2 efg
3 hij
* 1,3j
1 abcefghij

コマンド起動

* !  pwd
* !  source .bashrc

ed command

書込み・保存・終了

書込みは  w
終了は  q
修正失敗のときは w を実施前なら q 終了 q 終了と二回続けて終了
で、データを変更しないで済む。とくに置換失敗の時有効

アンドゥ 修正取り消し

u
を打つと直前の操作を取り消せる。
wにて書き込みをした場合でも元にもどせる。

ed command

[例]

ed 1.txt :1.txtをedで開く
63
P
*,n
1 07:22
2 I think
3 about
4 that
5 so GOOD
6 Part1
7 and
8 Enjoy
9 Summer
10 days

コマンドラインで cat コマンドで行番号付けて開いてみる
*! cat -n 1.txt
1 07:22
2 I think
3 about
4 that
5 so GOOD
6 Part1
7 and
8 Enjoy
9 Summer
10 days
! :コマンドモードの終了

指定行の後ろにデータを追加
*2 :2行目の表示 2n だと行番号を付けて表示する
I think
*a :追加モード
YOU :追加文字
. :文字追加終了
*,n :全データ行番号付けて表示
行番号は常に変わるのできおつけること
1 07:22
2 I think
3 YOU
4 about
5 that
6 so GOOD
7 Part1
8 and
9 Enjoy
10 Summer
11 days

*, s/a/A/g :全ての文字aをAに変える
*,n
1 07:22
2 I think
3 YOU
4 About
5 thAt
6 so GOOD
7 PArt1
8 And
9 Enjoy
10 Summer
11 dAys
*w :書き込み
67

*!cat -n 1.txt :書き込み完了したのをコマンドラインから確認
1 07:22
2 I think
3 YOU
4 About
5 thAt
6 so GOOD
7 PArt1
8 And
9 Enjoy
10 Summer
11 dAys
!
*q :ed終了

コマンドラインのcatにて確認できる内容が、
現在のファイルの内容なので
間違ってデータを作ってしまった時は、
wを押す前ならq qで一度edを
終了する。

編集と行の追加

base data
1 part1
2 part2
3 part3
4 part4
=======
5行目以降に
part11
part12
part13
part14
と追加したい。

* 1,4t4  1から4行目を5行目にコピーする。
*,n
1 part1
2 part2
3 part3
4 part4
5 part1
6 part2
7 part3
8 part4
*5,8 s/t/t1/g  5行目から8行目までのtをt1に変える。
*,n
1 part1
2 part2
3 part3
4 part4
5 part11
6 part12
7 part13
8 part14
*w

ed command

起動 表示 カーソル移動 キーワード 削除 入力 検索・置換 複写 データの移動 連結 コマンド起動 書込み・保存

番外編

ed で
編集中に
! で コマンド起動し
さらに ed を立ち上げて
編集もできる。

web編集などで別
頁を編集して、メイン頁も直したいときは
便利です。



[正規表現edで使えるもの]--------------------

/^$/ 空行
/./ 文字がある行
/^ / 全ての行
/about/ 行の中にaboutを含む行
/^The/ 行頭が Theで始まっている行

home