2011年2月15日火曜日

PowerShell でテキスト操作


  1. ファイルの内容を表示する。
    PS> gc hogehoge.txt
  2. 行数をカウントする。
    PS> (gc hogehoge.txt).length
  3. 正規表現にマッチした行を表示する。
    PS> (gc hogehoge.txt) | select-string "some"

正規表現による置換

PS> gc users.txt # "users.txt" の中身を表示
user01
user02
user03
user04

PS> (gc users.txt) -replace '.+(..)', 'dsadd user "cn=$0,cn=Users,dc=hogehoge,dc=local" -pwd "Secret#$1"' |
>> out-file -enc default add-user.cmd
>>
PS> gc add-user.cmd
dsadd user "cn=user01,cn=Users,dc=hogehoge,dc=local" -pwd "Secret#01"
dsadd user "cn=user02,cn=Users,dc=hogehoge,dc=local" -pwd "Secret#02"
dsadd user "cn=user03,cn=Users,dc=hogehoge,dc=local" -pwd "Secret#03"
dsadd user "cn=user04,cn=Users,dc=hogehoge,dc=local" -pwd "Secret#04"

※ 単にリダイレクト (>) でファイルに保存すると Unicode になってしまってばっちファイルが実行できません。out-file -enc default FILENAME を使うことにより、Shift_JIS コード (CP932) で保存できます。

各行の内容を "; " で区切る。

PS> foreach ($user in (gc users.txt)) { $out += $user + "; " }
PS> $out >users-list.txt
PS> gc users-list.txt
user01; user02; user03; user04



参考

0 件のコメント: