ed は、sed の原型、スクリプトの中でも記載してデータを追加・変更・削除できる。
かなり使えるので、原始的のようだが、使い勝手が良く頼もしい存在である。
ed テキストエディタ emacs から起動するシェルにて動作可能
ファイルを開くには
> ed file
コマンドモードと編集モードの区別がつきにくいので、
ed が起動後速やかに P を打つと * が表示される。
* が表示されているときは、コマンドモードなので、コマンドを打つ
* 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
行先頭がアルファベットの小文字ではじまる行と行番号を表示
* 11,23d
11行目から23行目まで削除
なお、1文字削除はない。 行で削除する。
* 11c
11行目をこれから入れるデータに変更する。
* a
文字入力 現在行の次に入力
. のみの行でコマンドに戻る
.
*
* i
現在行の前に挿入
* /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
書込みは w
終了は q
修正失敗のときは w を実施前なら q 終了 q 終了と二回続けて終了
で、データを変更しないで済む。とくに置換失敗の時有効
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を
終了する。
ed で
編集中に
! で コマンド起動し
さらに ed を立ち上げて
編集もできる。
web編集などで別
頁を編集して、メイン頁も直したいときは
便利です。
/^$/ 空行
/./ 文字がある行
/^ / 全ての行
/about/ 行の中にaboutを含む行
/^The/ 行頭が Theで始まっている行