パイプの各行をスペースで分割し、各トークンを独自の行に出力したいと考えています。
次を使用してこの結果を取得できることを認識しています。
(cat someFileInsteadOfAPipe).split(" ")
でも、もっと柔軟性が欲しい。各トークンでほぼ何でもできるようにしたいです。(以前は Unix でAWKを使用していましたが、同じ機能を取得しようとしています。)
私は現在持っています:
echo "Once upon a time there were three little pigs" | %{$data = $_.split(" "); Write-Output "$($data[0]) and whatever I want to output with it"}
明らかに、これは最初のトークンのみを出力します。トークンを for-each して、それぞれを順番に印刷する方法はありますか?
また、%{$data = $_.split(" "); Write-Output "$($data[0])"}
ブログから入手した部分ですが、何をしているのか、構文がどのように機能するのか本当にわかりません。
グーグルで検索したいのですが、何と呼べばいいのかわかりません。Google に 1 つか 2 つの単語を教えてください。または、%
とすべての$
記号が何をするのかを説明するリンクと、開き括弧と閉じ括弧の意味を教えてください。
(cat someFileInsteadOfAPipe).split(" ")
ファイル(または望ましい受信パイプ)に複数の行が含まれているため、実際には使用できないことに気付きました。
いくつかの答えについて:
を使用してトークン化する前に出力をフィルタリングする場合、コマンドの出力は文字列のコレクションではなく、オブジェクトのコレクションであるSelect-String
ことに注意する必要があります。分割したい文字列を取得するには、次のようにオブジェクトのプロパティにアクセスする必要があります。Select-String
MatchInfo
Line
MatchInfo
cat someFile | Select-String "keywordFoo" | %{$_.Line.Split(" ")}