【发布时间】:2012-07-06 02:29:48
【问题描述】:
我想在空格上分割管道的每一行,然后在自己的行上打印每个标记。
我意识到我可以使用以下方法得到这个结果:
(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])"} 部分是我从博客中得到的,我真的不明白我在做什么或语法是如何工作的。
我想用谷歌搜索它,但我不知道该怎么称呼它。请帮我说一两个词给 Google,或者一个链接向我解释 % 和所有 $ 符号的作用,以及左括号和右括号的意义。
我意识到我实际上不能使用(cat someFileInsteadOfAPipe).split(" "),因为文件(或最好的传入管道)包含多行。
关于一些答案:
如果您在标记化之前使用Select-String 过滤输出,您需要记住Select-String 命令的输出不是字符串集合,而是MatchInfo 对象的集合。要获取要拆分的字符串,您需要访问MatchInfo 对象的Line 属性,如下所示:
cat someFile | Select-String "keywordFoo" | %{$_.Line.Split(" ")}
【问题讨论】:
标签: string powershell tokenize