PowerShell(wc代替)


アニメ『ようこそ実力至上主義の教室へ』
勉強させてもらう上に、毎月10万円もらえるんですか、いい学校ですね。しかし世の中そんなに甘くない。

wcの-Lオプションで、ファイル中の最大桁数を求めることができますが、PowerShellでもやってみます。

実験用としてランダムな桁数のファイルを生成してみます。PowerShellでは文字列 * 数字で、繰り返し文字列が生成されるので、これを利用します。

PS C:\Users\takk\aaa> "A"*10
AAAAAAAAAA
PS C:\Users\takk\aaa>
function test($fname){
  1..10 | %{
    $r=$(random) % 50
    $s = "+"*$r
    $s >> $fname
  }
}
PS C:\Users\takk\aaa> 1..10 | %{ test "file$_.txt"}

実験用ファイルが10個できました。

PS C:\Users\takk\aaa> ls -name
file1.txt
file10.txt
file2.txt
file3.txt
file4.txt
file5.txt
file6.txt
file7.txt
file8.txt
file9.txt
PS C:\Users\takk\aaa>

中身を確認してみましょう。

PS C:\Users\takk\aaa> gc file1.txt
+++
++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++

++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++
+++++++++++++
+++++++++++++++++++++
+
++++++++++++++++++++++++++++++++++++++++
PS C:\Users\takk\aaa>

では最大桁数を求める関数を作ってみます。

function wc-L($fname){
  $colmax = 0
  gc $fname | %{
    $col = $_.Length
    if($colmax -lt $col){
      $colmax = $col
    }
  }
  $colmax
}

全ファイルをwc-Lにかければ、各ファイルの最大桁数が求められます。

PS C:\Users\takk\aaa> gci -name | % { "$_ "+$(wc-L $_) }
file1.txt 48
file10.txt 47
file2.txt 40
file3.txt 39
file4.txt 47
file5.txt 42
file6.txt 48
file7.txt 49
file8.txt 43
file9.txt 42
PS C:\Users\takk\aaa>

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA