見出し画像

sed - テキストエディタの操作で記述するコマンド

テキストエディタといえばBASICの持っているスクリーンエディタから始まったのですが、これは行番号を前提とするもので、画面上の行位置とコード上の行位置が実は無関係だったりするなど、ちょっと癖のあるものでした。機種によって細かな差異もあって、カーソル移動キーで上下左右して内容を変更してもリターンキーを打つまでは反映されないなど、長いコードを扱うには少しばかり不便なところもありました。

そんな時代に始めて使ったテキストエディタは確かMagicWindowsというもので、今では当たり前の入力画面のような見た目と内容が一致する世界が始まりました(プリンタに関しては制御コード丸見えでしたけど)。

初めてのワープロソフト

そしてPASCALといった行番号を必要としないプログラミング言語を扱うと、そちらにはコードを書くためのテキストエディタも用意されていました。

Language System と UCSD-PASCAL

こうしたいわゆるフルスクリーンエディタはとても便利で使いやすくはあったのですが、こういうプログラムを自力で書くのはなかなか大変で、エディタを必要とする小規模なシステムでは、相変わらず行単位で編集するラインエディタが使われていて、こちらであれば何とか自分でも書けるので、その仕組みを勉強していました。まだミニコンやUNIXが使える環境は無かったのですがTECOを調べたりしていましたね。

TinyPASCAL

Text Editor and Corrector

ここでラインエディタを覚えたのは役に立ってUNIXを使い始めた時に最初に使ったエディタはedでした。

ed (テキストエディタ)

edが使えるようになれば、exを覚えるのもすんなり行きます。なんでラインエディタなのと問われれば、最初に正しい端末設定を用意しないと便利なスクリーンエディタであるviやemacsを使うことが出来ないからです。この設定を行うにまずラインエディタを覚えて設定ファイルを作る必要があったりしたんですね。ラインエディタは軽くて通信速度が遅い環境でも使いやすく、通信ソフトなんかが出来る前の時代、単なるCOMポートでも動くのですから、今でも最後の砦です。

ex (text editor)

こうしてexを経由してviを覚えたので、viとして使っていてもよく”:”で始まるexコマンドを使います。単に入力していくときや全体を見渡すときはビジュアルモードが便利なのですが、検索や置換はexでやったほうがラクです。この時に上手に検索置換を行うために正規表現を駆使したexのコマンドを覚えるわけです。

こういう使い方に慣れると、何も対話的にエディタのコマンドを使うのではなく、バッチ的にエディタで行うような処理を出来ると良いなとも思い始めます。きっと誰しもそう思ったんでしょうね。そこでsedというコマンドが用意されるようになったのです。

sed (コンピュータ)

これで出来合いのテンプレートに文字を埋め込んだり、移植などで特定の関数名を新しい関数名に置換したり、バラバラだったインデントをキレイにしたりできるようになるわけです。これには正規表現を上手に使う必要があって、どう展開されるのかを頭の中でパズルのように組み立てて行くわけですね。

sedは、これでもまだ素直で、これがさらに発展してawkを使ってみたりperlな世界に足を踏み込んでいくことになるのでした。ということで、今回はそれらの前振りというところでした。

ヘッダ画像は、以下のものを使わせていただきました。
https://commons.wikimedia.org/wiki/File:Sed_stream_editor_cropped1.jpg
By NairobiPapel - https://commons.wikimedia.org/wiki/File:Sed_stream_editor.jpg, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=127744369

#テキストエディタ #ラインエディタ #ed #ex #sed #UNIX #端末設定 #正規表現 #検索置換

この記事が気に入ったらサポートをしてみませんか?