名称字符串的两个部分作为使用PowerShell
问题描述:
有益的堆栈溢出社区,名称字符串的两个部分作为使用PowerShell
我与包含的信息,我需要在一个更大的字符串的两件自动报告奏(.txt
文档)工作变量。我需要找到一种方法来从每个变量中创建变量,并使用它们传输到另一个命令中。报告淘汰
例子:
B072L8FX9H 2017-11-17 14:49:17 -05:00 2017-11-17 14:49:17 -05:00 D1 volenick amandun - -
我需要创建两个变量,一个包含文本的第一位,文件名B072L8FX9H
和含有最后一位一个变量,用户名amandun
。
请注意文件名将始终为10位数字,但用户名长度会有所不同。此外,- -
之前的末端空间有所不同。这些不一致使我不愿意使用修剪,但我不反对。
假设我能得到这两个变量,我相信我可以再管他们进入一个foreach
声明标记的实际文件
报告手续的其他例子:
B075XR6ZR1 2017-11-17 15:19:22 -05:00 2017-11-17 15:19:22 -05:00 D1 volenick pascalec - -
B01C5AVSBW 2017-11-17 15:21:40 -05:00 2017-11-17 15:21:40 -05:00 D1 volenick Gunthorp - -
B076FHS4CZ 2017-11-17 15:23:36 -05:00 2017-11-17 15:23:36 -05:00 D1 volenick amandun - -
我还没有能构建一个适用于所有不一致情况的修剪命令。也许有更好的方法来提取这些变量。
感谢
编辑 - 这是我们最后使用的解决方案:
答
这是检索你想要的信息的方式。
$Parse = 'B072L8FX9H 2017-11-17 14:49:17 -05:00 2017-11-17 14:49:17 -05:00 D1 volenick amandun - - '
$Parse = $Parse.Trim()
$Parse -match '\w+\s+-\s+-$' >$Null #returns $True
$Username = $Matches[0] -replace '\s+-\s+-'
$FileName = ($Parse -split '\s')[0]
+0
我也是从直线上的比赛开始,希望得到的领域也是如此,但是接下来要问的问题是“我怎么也得到时间?”好的答案,但。 –
答
下面是另一种方法,即将所有字段拆分。
$test = @"
B075XR6ZR1 2017-11-17 15:19:22 -05:00 2017-11-17 15:19:22 -05:00 D1 volenick pascalec - -
B075XR6ZR1 2017-11-17 15:19:22 -05:00 2017-11-17 15:19:22 -05:00 D1 volenick pascalec - -
B01C5AVSBW 2017-11-17 15:21:40 -05:00 2017-11-17 15:21:40 -05:00 D1 volenick Gunthorp - -
B076FHS4CZ 2017-11-17 15:23:36 -05:00 2017-11-17 15:23:36 -05:00 D1 volenick amandun - -
"@
# Depending on how you take your input, splitting the lines can be more straight forward.
# This just splits lines by the - - at the end of each line, ignoring how
# much whitespace is at the end of the line.
# Get-Content from a file would automatically split the lines.
$lines = $test -split "-\s*-\s*"
foreach($line in $lines)
{
# split each field of the data based on contiguous whitespace.
# this will fail if you have whitespace in a name or file, for example.
$fields = $line -split "\s+"
Write-Output "$($fields[0]) $($fields[9])"
}
随着输出:
B075XR6ZR1 pascalec B075XR6ZR1 pascalec B01C5AVSBW Gunthorp B076FHS4CZ amandun
我怀疑人们正在向下投票这个问题的一个明显缺乏的努力,自己解决问题。你提到你尝试过修饰的变体 - 详细说明你尝试过的可能会解决问题。也就是说,我可以想象你可能会尝试什么,并且知道Trim是这个特定工作的错误工具 - 所以你不能解决它。你给出了很好的有用输入示例,并明确了你想要输出的内容。就个人而言,我对这个问题没问题。 –
感谢马特,我同意。我已经添加了我们最终要做的一点。再次感谢大家的帮助。 – Garrett
不要忘记接受一个答案 - 也许是最接近你的解决方案。这将阻止人们重新回顾这个问题来尝试回答它。 –