我想在空格上分割管道的每一行,然后在自己的行上打印每个标记。
我意识到我可以使用以下方法获得此结果:
(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"}
显然,它只打印第一个令牌。有没有办法让我在令牌上逐个打印,依次打印?
另外,%{$data = $_.split(" "); Write-Output "$($data[0])"}
我从博客中得到的部分,我真的不明白我在做什么或语法是如何工作的。
我想用谷歌搜索它,但我不知道该怎么称呼它。请帮我说一两个词给谷歌,或者一个链接向我解释%
和所有$
符号的作用,以及左括号和右括号的意义。
我意识到我实际上不能使用(cat someFileInsteadOfAPipe).split(" ")
,因为文件(或最好的传入管道)包含不止一行。
关于部分答案:
如果您使用Select-String
在标记化之前过滤输出,您需要记住该Select-String
命令的输出不是字符串的集合,而是MatchInfo
对象的集合。要获取要拆分的字符串,您需要访问对象的Line
属性MatchInfo
,如下所示:
cat someFile | Select-String "keywordFoo" | %{$_.Line.Split(" ")}