0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PowerShellのSelectで角括弧[]を含む列の取り出し

Posted at

PowerShell の Select-Object では角括弧[]はワイルドカードとして扱われるため、
列名に角括弧[]を含む列をselectしたい場合は、以下のいずれかの方法を使います。
※以下では列名「打率[%]」を取り出す前提です。

  1. 開き角括弧[をバッククウォート2個でエスケープ
    select 打率``[%]
  2. 列名をシングルクウォート’’で括り、開き角括弧[をバッククウォート1個でエスケープ
    select '打率`[%]'
  3. 開き角括弧[をワイルドカード[]の対象に指定
    select 打率[[]%]

検証環境

PS C:> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.19041.1645
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.19041.1645
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

元のデータ

打率.csv

選手 打数 安打 打率[%]
aaa 543 353 0.650
bbb 654 311 0.476
ccc 454 254 0.559
ddd 586 423 0.722
PS C:> $data = Import-Csv .\打率.csv
PS C:\> $data

選手 打数 安打 打率[%]
---- ---- ---- -------
aaa  543  353  0.650  
bbb  654  311  0.476  
ccc  454  254  0.559  
ddd  586  423  0.722  

Selectで取り出す

  • 列名をそのまま指定しても取り出せません。
PS C:> $data | select 打率[%]    

打率[%]
-------





PS C:\> $data | select "打率[%]"
打率[%]
-------






  • 開き角括弧[をバッククウォート2個でエスケープ
    select 打率``[%]
    ダブルクウォートで括っても同じ結果になりました。
    select ”打率``[%]”
PS C:\> $data | select 打率``[%]

打率[%]
-------
0.650
0.476
0.559
0.722


PS C:\> $data | select "打率``[%]"
打率[%]
-------
0.650
0.476
0.559
0.722
  • 列名をシングルクウォート’’で括り、開き角括弧[をバッククウォート1個でエスケープ
    select '打率`[%]'
PS C:\> $data | select '打率`[%]'
打率[%]
-------
0.650
0.476
0.559
0.722

  • 開き角括弧[をワイルドカード[]の対象に指定
    select 打率[[]%]
    ワイルドカード[xyz]は、「xyz」のいずれかの1文字にマッチします。
    この対象に「[」を指定することで「[」自体がマッチします。
PS C:\> $data | select 打率[[]%]

打率[%]
-------
0.650
0.476
0.559
0.722


PS C:\> $data | select "打率[[]%]"

打率[%]
-------
0.650
0.476
0.559
0.722

プロパティとして列を取り出す場合

シングルクォートまたはダブルククォートで囲む必要があります。

PS C:\> $data.打率[%]
発生場所 :1 文字:10
+ $data.打率[%]
+          ~
配列インデックス式が存在しないか、または無効です。
発生場所 :1 文字:11
+ $data.打率[%]
+           ~
'%' 演算子に続けて値の式を指定する必要があります。
発生場所 :1 文字:11
+ $data.打率[%]
+           ~
式またはステートメントのトークン ']' を使用できません。
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException    
    + FullyQualifiedErrorId : MissingArrayIndexExpression
 
PS C:\> $data.'打率[%]'
0.650
0.476
0.559
0.722
PS C:\> $data."打率[%]"
0.650
0.476
0.559
0.722


参考記事

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?