2009年10月21日
川俣晶の縁側ソフトウェア技術雑記total 24629 count

PowerShellはawkの健全な進化形として使用できるか?

Written By: 川俣 晶連絡先

 PowerShellで123ダー!を読んで、いきなり目から鱗が落ちました。

 そうか!

 こう書けばawkとPowerShellはよく似ているんだ!

awkの場合 §

S:\>type delme.txt|gawk "{print $0}; BEGIN { print 1 }; END { print 2 }"

1

abc

def

ghi

2

S:\>

PowerShellの場合 §

PS S:\> type delme.txt|foreach { $_ } -Begin { 1 } -End { 2 }

1

abc

def

ghi

2

PS S:\>

awkではなくPowerShellを使う長所 §

  • 進化が止まっていろいろ使い勝手に不都合のあるawkを使う苦痛から解放される
  • Windows 7には標準で入っていて、どの環境でもすぐ使える (この点は特に重要)
  • しかも統合開発環境であるISEまでWindows 7に入っている
  • 上記の例を見ると、全体の文字数がより少なくて済んでいる。パワーアップした代償により多くの文字を打たされる……というわけでは、必ずしもない
  • キーワードとしてのForEach-Objectは長いが、実はTabキーの補完が使えるし、aliasのforeachでも良いのでさほど負担にならない
  • もちろん、PowerShellの方がはるかに新しくパワーも大きい。awkや正規表現で上手く扱えないパターンでも、PowerShellではシンプルに扱えるケースも多い
  • シェルのスクリプトに誰も万能であることを求めないので、機能過多に進化して破綻するリスクが少ない (言語であるawkに万能を求めて手軽さを失ったのがPerlとも言える)

感想 §

 実は自分の中で1つの盲点があったことに気づきました。つまり、シェルの後継はシェル、言語の後継は言語という思いこみがありました。しかし、PowerShell自身が正規表現も扱える以上(たとえばwhere { $_ -match "[ad].." })、awk相当の機能はおおむねPowerShellで満たすことができることになります。これでもう、どれを選んでも何らかの問題があるLL言語の混迷とサヨナラして、awk後継言語の選定に終止符を打てます。

 更に言えば、乗り換える契機を見いだしにくかったcmd.exeからPowerShellに本格移行するタイミングが明確に見えた感じがあります。バッチの代わりにPowerShellで書くと思えばメリットが見いだしにくいわけですが、awkの代わりにPowerShellで書くと思えばメリットがはっきりと見えます。

Facebook

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
2009年
10月
28日
英語spam電子メール激増中か?
3days 0 count
total 3228 count
【技術雑記】の前のコンテンツ
2009年
10月
18日
SQL Azureのメモ 2009/10/18
3days 0 count
total 3784 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

https://mag.autumn.org/tb.aspx/20091021162501
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.