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行目の後ろに)移動
*
行の連結
* 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 data1 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で始まっている行