powershell - 如何将多行字符串添加到 powershell 中的数组?
问题描述
我正在尝试遍历一系列 txt 文件,将信息提取到基于 : 分隔符的数组中。
我从文本文件中获取的所有值都放在一行中,除了一个。(“广告文字”值)。这会切断最终输出中第 1 行之后的信息。当我事先删除换行符和换行符时,没有正确输入任何字段。
我将如何指定希望我的数组接受“广告文本”字段的多行输入?
下面是我正在使用的代码:
$files = ls "*.txt"
$dictionary = @{}
[System.Collections.Generic.List[String]]$list = @()
foreach($f in $files){$in = Get-Content $f
$in.Split([Environment]::NewLine) | ForEach-Object { $key,$value = $_.Split(':')
$dictionary[$key] = $value
}
[void]$list.Add( $dictionary['Ad ID'] + ',' + $dictionary['Ad Text'] + ',' + $dictionary['Ad Landing Page'] + ',' + $dictionary['Ad Targeting Location'] + ',' + $dictionary['Age'] + ',' + $dictionary['Language'] + ',' + $dictionary['Placements'] + ',' + $dictionary['Interests'] + ',' + $dictionary['Behaviors'] + ',' + $dictionary['Ad Impressions'] + ',' + $dictionary['Ad Clicks'] + ',' + $dictionary['Ad Spend'] + ',' + $dictionary['Ad Creation Date'] + ','+ $dictionary['Friends'] + ',' + $dictionary['Ad End Date'] + ',' + $dictionary['Excluded Connections'] + ',' + $dictionary['Image'] + ',' + $dictionary['Ad Targeting Location']+','+$dictionary[‘File Name’] )
}
$list | Out-File -FilePath '.\trial.csv' -Append
解决方案
假设Ad Text:
-prefixed 行后面的附加行不包含:
字符本身:
# Create sample text file t.txt
@'
Ad ID:10
Ad Text:one
two
Ad Landing Page:http://example.org
'@ > t.txt
# Split the lines into field names and values by ":" and
# build a dictionary.
$dict = [ordered] @{}
$i = 0
(Get-Content -Raw t.txt) -split '(?m)^([^\n:]+):' -ne '' | ForEach-Object {
if ($i++ % 2 -eq 0) {
$key = $_
} else {
$dict[$key] = $_
}
}
# Output the dictionary, showing each entry as a list.
$dict | Format-List
输出如下,表明该Ad Text
条目包含两行:
Name : Ad ID
Value : 10
Name : Ad Landing Page
Value : http://example.org
Name : Ad Text
Value : one
two
推荐阅读
- python - 使用 Python 将 YAML 文件转换为 XLSX
- java - 运行我的颤振项目时收到此错误消息
- python - 在 python 链表中实现 __next__()
- python - 在 Heroku Flask 应用程序中将文件上传到 IPFS
- postgresql - postgres:未找到命令,但已满足要求
- security - 如何从管道中的 truffleHog 扫描中排除单个秘密?
- h2 - 为 Corda 节点打开多个 H2 控制台
- r - 基于数据框的其他列的列行连接
- r - 循环遍历多列并使用 r 中的给定范围对每列进行栅格化
- c# - 将嵌套对象从 Blazor API 返回到 WASM