PowerShellで行を分割する方法は?


83

私は[ PowerShellにまったく慣れておらず]ループ内で文字列を連結しています。特別な条件が発生した場合は、改行挿入する必要があります...どうすればよいですか?

基本的に\n。に相当するものを探しています。

$str = ""
foreach($line in $file){
  if($line -Match $review){ #Special condition
    $str += ANSWER #looking for ANSWER
  }
  #code.....
}

これまでに試しました

"\n" '\n' "\N" '\N' "\r" '\r' "\R" '\R' '`n' '`r' '-n' '-r' 

回答:


137

"`n"二重引用符で試してください。(一重引用符ではありません'`n'

エスケープ文字の完全なリストについては、以下を参照してください。

Help about_Escape_character

コードは次のようになります

$str += "`n"

ありがとうございますが、機能しません。それは私に与えますThe term ' ' is not recognized as the name of a cmdlet, function, sc....
user454322 2012

1
の例はHelp about_Escape_character、問題を理解するのに役立ちました。回答を編集して解決策を示す
user454322 2012

したがって、複数行の文字列を分割するには、$filestobackup = $files.split("`n");
bgStack15 2015

9

私はそれを見つけたと思います。「 `n」と入力するだけです(引用符付き!)

ありがとう!


2

他の誰かがこれに遭遇した場合に備えて、答えを明確にするために、 `nはアクサングラーブnであり、シングルティックnではありません


4
実は「アクサングラーブ」です。チルダは〜である
elkirkmo

1
説明をありがとう。
SQLMac 2017年

いいえ、ǹはアクサングラーブnで、 `nはバックティックnです。なぜそう思わないのかわからない。私が何かを逃しているならば、参照を投稿してください。
ChrisBroski20年

1

次のものを使用することもできます。

Write-Host "";

または、特定の質問の観点から言えば、次のようになります。

$str = ""
foreach($line in $file){
  if($line -Match $review){ #Special condition
    $str += Write-Host ""
    $str += ANSWER #looking for ANSWER
  }
  #code.....
}

0

エスケープが機能しない場合は、次のことを試すことができます。

$str += $("" | Out-String)

何も追加しませんが、として、Out-String新しい行を作成します。


0

以下のようなコードだけを使用している場合は、行末にアクサングラーブだけを付ける必要があります`

docker run -d --namerabbitmq `
           -p 5672:5672 `
           -p 15672:15672 `
           --restart = always `
           -ホスト名rabbitmq-master`
           -vc:\ docker \ rabbitmq \ data:/ var / lib / rabbitmq `
           ウサギmq:最新
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.