perlはファイル操作や正規表現に優れているスクリプト言語であるため、コマンドライン上でperlを駆使することができれば作業の幅が広がります。
perlの-eオプションによりコマンドライン上で実行可能となり、1つ1つの命令を ; で区切ることで複数命令を記述可能となるため、これを使いこなすことでスクリプトを作らなくともperlの機能を作業に使うことができるようになります。
コマンドを予め作成して本番作業時にコピペしたい場合やオペレーターに作業を依頼する場合等、スクリプトを気軽に作れない場合も少なくないので、そのような場合に効果を発揮します。
以下は、ファイルの中から特定の文字列のバイト位置を走査する例です。
ファイルの先頭で見つかった場合は0、次のバイトで見つかった場合は1、…といった具合で値が返ります。
見つからなかった場合は-1が返ります。
(例えば、改行コード無しのファイルで特定のデータをcutで除外したい時に、除外する位置を確認するのに使えます)
1 2 3 4 5 |
#> cat hoge.txt #> abcde #> perl -e 'my $str; my $pos; $str = `cat hoge.txt`; $pos = index($str,"a"); print "$pos\n";' #> 0 #> |
いかがでしたでしょうか。
perlという言語自体は知っている方が多いと思いますが、それをコマンドラインから実行して作業を効率化できる、というのは盲点ではなかったでしょうか。
ちなみに、今回紹介しませんでしたが、perl -eには便利な追加オプションがいくつもあります。
(標準入力(インプット)を1行1行処理、改行の強制付与、等)
「perl ワンライナー」で検索すると参考になるページが出てくるので、更に複雑な操作を行いたい場合は調べてみると良いでしょう。
では、また来週!
コメント