[英]Powershell text string to CSV
最初,我認為這個問題比實際的更為復雜,但是在深入研究之后,我似乎仍然找不到能夠重新利用的解決方案。 我正在嘗試使用通配符,但也許我正在以錯誤的方式進行操作
SQL*Plus: Release 11.2.0.1.0 Production on Wed Aug 13 14:20:22 2014
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
EXTERNAL ID
--------------------------------------------------------------------------------
'M1
---
12345678-1
M07
18765432-1
M14
19638527-1
M14
EXTERNAL ID
--------------------------------------------------------------------------------
'M1
---
17418529-1
M07
EXTERNAL ID M01
12345678-1 M07
18765432-1 M14
19638527-1 M14
17418529-1 M07
任何見解或幫助表示贊賞
這是我認為可以做的事情。 它可能可以變得更高效,更小,但是我還是為了易於閱讀和理解而去:
$res = @()
$content = get-content SomeFile.txt | ?{($_ -ne 'EXTERNAL ID') -AND (-NOT $_.StartsWith('"-')) -AND ($_ -ne "'M1") -AND (-NOT $_.Startswith('SQL*')) -AND ($_ -ne '')}
for($count = 0; $count -lt $content.Count; $count = $count + 2){
$id = $content[$count]
$m = $content[$count + 1]
$temp = New-Object PSCustomObject -Property @{'External ID' = $id;
'M01' = $m;
}
$res += $temp
}
$res | Export-CSV .\Som\Path\Name.csv -NoTypeInformation
與EBGreen的答案類似,但我認為更簡單。
$Col2=$false
gc c:\temp\test.txt |Select -skip 6| ?{![string]::IsNullOrEmpty($_) -and $_ -notmatch "^(---|External|'M1)"} | %{
If($Col2){
[PSCustomObject][Ordered]@{
'External ID'=$Col1
"'M1"=$_}
$Col2=$false
}else{
$Col1=$_
$Col2=$true
}
} | Export-Csv C:\temp\New.csv -NoTypeInformation
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.