Powershell和一些简单的字符串操作

时间:2012-07-10 03:12:03

标签: string powershell

需要一些帮助来构建一个PowerShell脚本来帮助进行一些基本的字符串操作。我知道有足够的权力来解决问题,但无法弄清楚语法或编码是否有效。

我有一个看起来像这样的文本文件 -

Here is your list of servers:
server1
server2.domain.local
server3
Total number of servers: 3

我需要获取该文本文件并删除第一行和最后一行(始终是第一行和最后一行。)然后我需要采取所有其他行并基本上将其转换为CSV文件。

最终输出应该是一个看起来像这样的文本文件 -

server1,server2.domain.local,server3

有关从哪里开始的任何建议?谢谢!

3 个答案:

答案 0 :(得分:1)

您可以尝试:

$a = Get-Content C:\temp\M.TXT # Where M.TXT is your original file
$a[1..($a.count-2)] | % {$s=""} {$s+=$_+","}{$s.trim(",") | Out-File m.csv} # M.CSV is the result file

答案 1 :(得分:0)

以下是其他几种方式。

(Get-Content foo.txt | Where {$_ -notmatch '^\s*$'} | Select -Skip 1 | 
     Select -Skip 1 -Last 2E9) -join ',' > foo.csv

如果您碰巧拥有PowerShell Community Extensions(对于Skip-Object):

(Get-Content foo.txt | Where {$_ -notmatch '^\s*$'} | 
     Skip-Object -First 1 -Last 1) -join ',' > foo.csv

请注意,Where {$_ -notmatch '^\s*$'}会消除任何空行。

答案 2 :(得分:0)

您可以使用范围运算符:

$content = Get-Content D:\Scripts\Temp\test1.txt
$content[1..($content.count-2)] -join ',' | Out-File servers.txt

最好导出到csv文件,以便您可以将其导回并对服务器名称进行操作:

$content = Get-Content D:\Scripts\Temp\test1.txt
$content[1..($content.count-2)] | Select-Object @{Name='ComputerName';e={$_}} | Export-Csv servers.csv -NoTypeInformation