我有以下变量:
$input = "H:\input_file.txt"
$output = "H:\output_file.txt"
$data = Get-Content -Path $input | ConvertFrom-Csv -Delimiter '|' -Header 'Col1','Col2','Col3','Col4','Col5'
如上所示,输入文件有5列。该文件中包含各种记录类型。并非所有记录类型都定义了5列。所以,让我们说我有3种记录类型 - A,B和C.A有3列,B有4列,C有5列。示例输入文件如下所示:
A|x|1
B|y|2|stuff
C|z|3|stuff|other
B|y|3|other
A|z|2
我的脚本然后对$ data中的某些列(Col1除外)中的值进行了一些修改。我想将$ data中的所有行输出到文本文件。
如果我做的话
$data | Select Col1,Col2,Col3,Col4,Col5 | ConvertTo-Csv -Delimiter '|' -NoTypeInformation | % {$_ -replace '"', ""} | Select-Object -Skip 1 | Set-Content -Path $output
它会将不必要的管道字符附加到记录类型A和B(因为它们的列少于5列,但我正在进行Select Col1,Col2,Col3,Col4,Col5
)。
是否有一种干净的方法将$ data输出到文本文件而没有记录类型A和B上不必要的管道字符?我现在最好的猜测是为记录类型A,B和C设置3个独立的管道,这样我就可以对给定的记录类型进行正确的选择,然后以某种方式将它们粘合在一起。
答案 0 :(得分:1)
以下代码可能对您有用:
<div class='test'>
<div class="icon icon-test">Testing</div>
</div>
答案 1 :(得分:0)
我觉得做一些字符串操作似乎有点棘手和好,
$data|ConvertTo-Csv -NoTypeInformation|ForEach-Object{$_.replace('","','|').replace('"','').replace(',','')}|Select-Object -Skip 1|Set-Content $outputtext
这里通过避免_delimiter,我们可以在PowerShell中使用一些字符串处理方法
此致 Prasoon Karunan V