はじめに
シェルスクリプトとedをちょっと真面目にお勉強したら、プログラム書くまでもなく、色々できることが増えて幸せになれるかも?と思わせてくれたお題について書きます。
なお、以下で、$ はシェルプロンプトです。
お題
指定したテキストファイルの行を逆順にするようなプログラム reverse を作る。
具体的には以下のような感じ。
shell
$ cat abc.txt
111
222
333
444
555
というテキストファイルabc.txt があり、これに対して
shell
$ reverse abc.txt
とすると、abc.txt が以下のようになる。
shell
$ cat abc.txt
555
444
333
222
111
このような reverse を作成したい。
答え
reverse
#!/bin/sh
ed - $1 <<- !
g/^/m0
w
q
!
以下実行したところ
shell
$ cat abc.txt
111
222
333
444
555
$ reverse abc.txt; cat abc.txt
555
444
333
222
111
$ reverse abc.txt; cat abc.txt
111
222
333
444
555
$
引用元
入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界
P.107 4章10節 ヒアドキュメント
参考
Wikipedia: ed