【Powershell】配列の値と文字列を連結して改行する方法

Powershell Powershell

やり方に苦戦したので、配列の値(String型)と文字列を連結して出力した際に改行して出力する方法をまとめてみました。

広告

配列の値と文字列を連結して出力した際に改行して出力する方法

配列の値の文頭に改行コード(`r`n)をつけるだけです。

以下では、追加する値の文頭に改行コード(`r`n)をつけて値を配列に格納しています。

$hogehoge_list = @();
$hogehoge_list += "`r`nhogehoge-hogehoge01"
$hogehoge_list += "`r`nhogehoge-hogehoge02"
$hogehoge_list += "`r`nhogehoge-hogehoge03"

改行コードの有無で出力結果を比較

改行コードの有無で出力がどのように変わってくるのかを確認してみます。

今回は「$str_hoge02」という変数に「hogehoge_」という文字列と「$hogehoge_list01」もしくは「$hogehoge_list02」を連結させ、どのような出力となるかを試してみました。

実行結果:改行コードを入れない場合

PS C:\> $hogehoge_list02 = @();
PS C:\> $hogehoge_list02 += "hogehoge-hogehoge01"
PS C:\> $hogehoge_list02 += "hogehoge-hogehoge02"
PS C:\> $hogehoge_list02 += "hogehoge-hogehoge03"
PS C:\>
PS C:\> $str_hoge02 = "hogehoge_" + $hogehoge_list02
PS C:\>
PS C:\> $str_hoge02
hogehoge_hogehoge-hogehoge01 hogehoge-hogehoge02 hogehoge-hogehoge03
PS C:\>

「$str_hoge02」には配列[$hogehoge_list02]の文字列が追加されましたが、改行などはされていません。

改行コードを入れた場合

PS C:\> $hogehoge_list = @();
PS C:\> $hogehoge_list += "`r`nhogehoge-hogehoge01"
PS C:\> $hogehoge_list += "`r`nhogehoge-hogehoge02"
PS C:\> $hogehoge_list += "`r`nhogehoge-hogehoge03"
PS C:\>
PS C:\> $str_hoge = "hogehoge_" + $hogehoge_list
PS C:\>
PS C:\> $str_hoge
hogehoge_
hogehoge-hogehoge01
hogehoge-hogehoge02
hogehoge-hogehoge03
PS C:\>

「$str_hoge02」には配列[$hogehoge_list01]の文字列が追加され、標準出力時に改行されて表示されていることがわかります。

[-join]を利用して既存配列に改行コード追加も利用可能

[-join]オプションを利用して既存配列に改行コードを追加することも可能ですが、文頭は改行できないのでその部分は注意が必要です。

また、[-join]オプションで改行コードを追加した配列を一度変数に格納してから文字列と一緒に扱う必要があります。(以下の「$hoge_join」部分)

PS C:\hogehoge> $hogehoge_list03 = @();
PS C:\hogehoge> $hogehoge_list03 += "hogehoge-hogehoge01"
PS C:\hogehoge> $hogehoge_list03 += "hogehoge-hogehoge02"
PS C:\hogehoge> $hogehoge_list03 += "hogehoge-hogehoge03"
PS C:\hogehoge>
PS C:\hogehoge> $hoge_join = $hogehoge_list03 -join "`r`n"
PS C:\hogehoge>
PS C:\hogehoge> $str_hoge03 = "hogehoge_" + $hoge_join
PS C:\hogehoge>
PS C:\hogehoge> $str_hoge03
hogehoge_hogehoge-hogehoge01
hogehoge-hogehoge02
hogehoge-hogehoge03
PS C:\hogehoge>

ファイルに出力するときにも改行された状態で出力される

powershellの結果をテキストファイルなどに吐き出すときにも、改行されていると便利です。

上記の実行結果として得られた変数「$str_hoge」「$str_hoge02」を、それぞれ「hoge.txt」「hoge02.txt」として出力してみます。

PS C:\hogehoge> $str_hoge > hoge.txt
PS C:\hogehoge>
PS C:\hogehoge>
PS C:\hogehoge> $str_hoge02 > hoge02.txt
PS C:\hogehoge>
改行処理したコマンドの実行結果と改行処理していないコマンドの実行結果の比較

改行処理されている「$str_hoge」を出力した「hoge.txt」では、改行されてることが確認でき、一方で「$str_hoge02」を出力した「hoge02.txt」では、改行されていないことが確認できました。

タイトルとURLをコピーしました