読者です 読者をやめる 読者になる 読者になる

PowerShell

awk の BEGIN とか END 的なアレ

> @(1, 2, 3, 4, 5) | %{ $r = 1 }{ $r *= $_ }{ $r } 120こんな感じで、% は 3 つスクリプトブロックを受け取ることができる。 それだけ?それだけ。

ストリーミング (あと switch 文)

カレントディレクトリに以下の内容の aaa.txt があったとして、 hoge piyo foo barこのコマンドを実行するとどういう結果が得られるでしょう? $line = 0; cat 'aaa.txt' | ?{ $line++; $_ -match 'o$' } | %{ "$line $_" }分かりにくい場合はこちらをどぞ。…

心が洗われるコマンド

ls . -Recurse -include '*).*' | % { del $_ }カレントディレクトリ以下に存在する、拡張子の前が「)」のファイルをすべて削除します。 今日はこれで「ほげほげ(最新版).hoge」とか、「ぴよぴよ(2).piyo」とか、「ふーふー(backup).foo」とかいうファイルを…

C#・・・.NET っぽい本を積んでみた

内容はまた後で。 タイトルしかないものは「他にいい本があるか古いか興味の対象外」、それ以外はそれ以外です。 .NET 全般とかなんとか 実践!ソフトウェアアーキテクチャ ~VisualStudioとASP.NETによる業務システム開発方法~ (.NET TECHNOLOGY)作者: 尾島良…

人間が書くものじゃないものはコンピュータに書かせる

こんな感じで。 $months = @('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec') $months[-1..-$months.Length] | % { @" , CASE WHEN P.$($_.ToLower()) IS NOT NULL THEN '$_.' ELSE NULL END "@ }配列の反転には要素…

大文字・小文字にはまった

PowerShell が大文字・小文字を区別しない、ってのは知ってたんだけど、まさか連想配列のキーでも考慮されない*1とは・・・ PS > $map = @{ 'a'='aaa'; 'A'='AAA'; } キー 'A' の重複は、ハッシュ リテラルでは許可されていません。 発生場所 行:1 文字:15 +…

文字列比較にはまった

PS > 'ー' -eq '々' True PS > 'ー' -ceq '々' True PS > 'ー' -contains '々' True PS > 'ー' -match '々' False PS > 'ー'.IndexOf('々') 0 PS > 'ー'.Contains('々') False PS > 'ー'.Equals('々') False文字列 の比較には -match 演算子か Contains か E…

キャストにはまった

PS> [int[]](-0.51, -0.5, 0.5, 0.51) -1 0 0 1この挙動にはびっくり。 追記: PS> [int[]](-0.51, -0.5, 0.5, 0.51, -1.51, -1.5, 1.5, 1.51) -1 0 0 1 -2 -2 2 2偶数なら五捨六入、奇数なら四捨五入、ね。

switch

PowerShellのswitch文は条件分岐としても使えるけど、ループ+条件分岐もできるっぽい。 PS> switch -wildcard (ls) { >> *~ { $backup++ } >> *.txt { $text++ } >> } >> PS> $backup 11 PS> $text 5 PS> これで、カレントディレクトリでlsした結果から、~で…

PowerShellインアクション

Windows PowerShell イン アクション [イン アクションシリーズ]作者: Bruce Payette,株式会社クイープ出版社/メーカー: ソフトバンククリエイティブ発売日: 2007/07/31メディア: 大型本購入: 1人 クリック: 57回この商品を含むブログ (18件) を見るこの本、…

柔軟性

全く何の役にも立たないけど、PowerShellの柔軟性を表す面白い例をひとつ。 PS > $str = "length" PS > $str.$str 6 一応説明すると、1行目で変数$strに"length"と言う文字列を格納し、 2行目でその文字列のLengthプロパティにアクセス、 それが3行目で出力…