powershellの文法の不思議

概要

powershellはどうも、shellなのかプログラムなのかようわからん。
まあ、気持ちはわからないでもないが、気になったことをつらつらと書いてみようかと思う

? select-object

? というのは 検索条件を作成するのによくつかう
ps | ? cpu -gt 100
とかすると、cpuを100秒以上使っているプロセスを一覧できる
これは、
ps | ? {$_.cpu -gt 100}
という書き方もあって、この場合は$_というのを書かないといけない。
最初の書き方はいわゆる「糖衣構文」で検索条件が1つであれば大丈夫である。
2つあって-andで結合する次のような指定は「糖衣構文」では書けない
ps |? {$.cpu -gt 100 -and $.PM -gt 100MB}

awkはないのか

基本的にはawkと同じようなことをやりたい場合はimport-csvでデータに
格納してから実行するのがpowershellの作法のようである

$kan = import-csv -enc sjis 海域・ドロップ報告書.csv
(海域・ドロップ報告書.csvとはkancollesnifferの出力である。)

さて、これを必要な分だけ表示するのは
$kan|j|select 日付,敵制空値,味方制空値,制空状態,マップ|ft
みたいな感じで使えるのだが・・いちいち項目を設定するのがめんどくさい
$kan[0].psobject.properties.name
とすると、項目名の一覧がでる、そこの順番で
$kan|j|select $kan[0].psobject.properties.name[0,35,36,37,38]|ft
とすると同じ出力となる

文字解析

{0} -f date
はエラーである
"{0]" -f date
もエラーである
"{0}" -f (date)
はその日付を表示してくれる


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