Help us understand the problem. What is going on with this article?

PowerShell入門について

PowerShell も 初心者未満ですが…

ずばりこちらの記事がおきにいりです。

もっともわたしは「想定読者」の条件にあてはまりませんが、とてもおもしろくよめました。

しかし僭越ながらツッコミっぽいことを…

パイプ Oriented 環境、PowerShell」についてです。

cat test.csv | awk -F, '{print $2}'

の PowerShell 代替が

cat test.csv | %{ $_.Split(",")[1] }

とのことですが、じゃあ awk -F, '{print $2, $NF}' の代替は?とおもったときに答えをみつけるのにやや苦労しました1――こうするのかなと:

cat test.csv | % { $_.Split(',')[1, -1] -join ' ' }

つぎに

cat test.csv | awk -F, 'BEGIN {total = 0} $4 ~ /20090405/ { total+=$3 }END {print "Total:" total}'

の同等が

cat .\test.csv | ?{ $_.Split(",")[3] -match "20090405" } | %{$total=0}{ $total += $_.Split(",")[2]}{$total}

で、後者のほうが思考の流れにそってパイプラインの左から右へ処理をつなげていけてよいとのことです。でも、それなら AWK のほうでも

cat test.csv | awk -F, '$4 ~ /20090405/' | awk -F, 'BEGIN {total = 0} { total+=$3 }END {print "Total:" total}'

とかじゃだめなんですか、とおもってしまいます。

あと AWK でパターン・アクションを複数かいたとき、たとえば

cat test.csv | awk -F, '
    BEGIN { total1 = total2 = 0 }
    $4 ~ /20090405/ { total1 += $3 }
    $NF ~ /New-Opportunity/ { total2 += $3 }
    END { print "Total1:", total1, "Total2:", total2 }'

の PowerShell 同等には ? { ... } はつかえず結局

cat test.csv | % { $total1 = $total2 = 0 } {
    if ($_.Split(',')[3] -match '20090405') { $total1 += $_.Split(',')[2] }
    if ($_.Split(',')[-1] -match 'New-Opportunity') { $total2 += $_.Split(',')[2] }
} { "Total1: $total1 Total2: $total2" }

みたいなことになってしまうんではないかと…。

そういうわけで、とてもおもしろいとおもいつつもじつはこの記事の主張が本当のところはわかってません。しかし、わかっていないのはわたしがまだ PowerShell をまったくわかっていないからで、この記事の趣旨が「あー、そういうことだったのか」とわかるようになることを期待しつつ学習をつづけていきたいとおもいます。


  1. もっとも、これはこの記事自体の問題点ではありませんけど。 

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away