Разбейте строку с помощью PowerShell и сделайте что-нибудь с каждым токеном

Я хочу разбить каждую строку канала на пробелы, а затем распечатать каждый токен в отдельной строке.

Я понимаю, что могу получить этот результат, используя:

(cat someFileInsteadOfAPipe).split(" ")

Но я хочу больше гибкости. Я хочу иметь возможность делать что угодно с каждым токеном. (Я использовалAWK в Unix, и я пытаюсь получить ту же функциональность.)

У меня сейчас есть:

echo "Once upon a time there were three little pigs" | %{$data = $_.split(" "); Write-Output "$($data[0]) and whatever I want to output with it"}

Который, очевидно, печатает только первый токен. Есть ли способ для меня для каждого по токенам, печатая каждый по очереди?

Так же%{$data = $_.split(" "); Write-Output "$($data[0])"} часть, которую я получил из блога, и я действительно не понимаю, что я делаю или как работает синтаксис.

Я хочу найти его в Google, но не знаю, как это назвать. Пожалуйста, помогите мне с одним или двумя словами в Google, или ссылку, объясняющую мне, что% и все$ символы, а также значение открывающих и закрывающих скобок.

Я понимаю, что на самом деле не могу использовать(cat someFileInsteadOfAPipe).split(" "), поскольку файл (или предпочтительный входящий канал) содержит более одной строки.

Относительно некоторых ответов:

Если вы используетеSelect-String чтобы отфильтровать выходные данные перед токенизацией, необходимо помнить, что выходные данныеSelect-String Команда - это не набор строк, а наборMatchInfo объекты. Чтобы добраться до строки, которую вы хотите разделить, вам нужно получить доступ кLine собственностьMatchInfo объект, вот так:

cat someFile | Select-String "keywordFoo" | %{$_.Line.Split(" ")}

Ответы на вопрос(3)

Ваш ответ на вопрос