powershell中如何按照文件中指定字符串进行排序


PowerShell交流中心分类: Powershell基础powershell中如何按照文件中指定字符串进行排序
0
momoko_glad asked 8 年 ago

在powershell中,如何将A文件中的记录,指定每一行中某一区间的字符串进行排序吗,然后保存到B文件中,求大神解惑

oceanho replied 8 年 ago

试试这个呢(管道+自定义对象)
(
“My name is OceanHo”,
“My name is ZhangSan”,
“My name is LiSi”,
“My name is WangErMaZi”
) | ForEach-Object -Process {
Return Get-KeyValuePSObject -Text $_ -SortKeyStartPos 11
} | Sort-Object -Property Key | Out-File -FilePath “F:\my-sorted.txt”

Function Get-KeyValuePSObject{
Param(
[string]$Text,
[int]$SortKeyStartPos = 0,
[int]$SortKeyFinishedPos = -1
)
$SortTemplate = (” | Select-Object Key,Value )
If($Text.Length -eq 0){
Return
}
If($SortKeyFinishedPos -le -1){
$SortKeyFinishedPos = $Text.Length
}
$SortTemplate.Key = $Text.Substring($SortKeyStartPos,($SortKeyFinishedPos – $SortKeyStartPos))
$SortTemplate.Value = $Text
Return $SortTemplate
}

momoko_glad replied 8 年 ago

先谢谢啦,
不过觉得太麻烦了,下面的如何呢
Get-Content “d:\a.txt” | Sort-Object { [String]$_.substring(1,1)}, { [String]$_.substring(6) } | set-Content d:\b.txt

1 Answers
0
Best Answer
oceanho answered 8 年 ago

将需要排序的部分提取出来作为一个排序键Key,并与原始数行据构建一个PSObject,然后用这个Key进行排序