Je suis nouveau sur PowerShell. J'ai des données au format en colonnes, qui doivent être converties en lignes en les triant numériquement.
Données d'entrée:

Fruit month amount
1apple jan 10 
3blueberry jan 20
4mango jan 30
2banana jan 50
1apple feb 20 
3blueberry feb 50
4mango feb 80
2banana feb 95

Sortie désirée:

Fruit JanAmount FebAmount
1apple 10 20
2banana 50 95
3blueberry 20 50
4mango 30 80

Quelqu'un peut-il m'aider avec ça?

-1
PerlBatch 1 avril 2017 à 09:22

2 réponses

Meilleure réponse

Tant qu'il n'y a pas d'espaces dans les noms de fruits, vous pouvez lire le fichier au format CSV avec des espaces comme délimiteur. Puis fusionnez-les en utilisant Group-Object et Add-Member pour ajouter dynamiquement x mois. Ex:

Import-Csv -Path $InSort -Delimiter " " |
#Group all records per fruit
Group-Object Fruit |
#Sort by fruitname
Sort-Object Name |
#Process each group (fruit) to merge the rows
ForEach-Object {
    #Create object (row) per fruit
    $obj = New-Object -TypeName psobject -Property @{
        Fruit = $_.Name
    }

    #For each record (month), add amount column
    $_.Group | ForEach-Object {
        #Turn month-value into TitleCase (first letter uppercase)
        $month = (Get-Culture).TextInfo.ToTitleCase($_.Month)
        #Add amount-column per record (month)
        Add-Member -InputObject $obj -MemberType NoteProperty -Name "$($Month)Amount" -Value $_.Amount
    }

    #Output new objects
    $obj
} | Export-CSV -Path newfile.csv -NoTypeInformation -Delimiter " "

Production:

Fruit      JanAmount FebAmount
-----      --------- ---------
1apple     10        20       
2banana    50        95       
3blueberry 20        50       
4mango     30        80  
2
Frode F. 1 avril 2017 à 08:34

J'ai un storyboard sur TableViewCell, que j'utilise pour le transfert vers un autre VC sur un clic de cellule dans la méthode {{X0}}. Maintenant, j'ai fait un double tap {{X1}} pour gérer le toucher tactile sur la cellule. Le problème est que sur un simple tap, segue fonctionne et le double tap ne fonctionne pas. Le double tap fonctionne bien en cliquant hors de la cellule. Est-il possible de résoudre cela d'une manière ou d'une autre avec mon code jusqu'à présent? Ou je dois supprimer le segue et gérer le robinet simple et le double tap séparément. Merci pour vos suggestions...

import-csv "C:\Temp\yourfile.txt" -Delimiter  ' ' | 
    group fruit |
        select Name, @{N="JanAmount";E={($_.Group | where month -eq 'jan').amount}} , @{N="FebAmount";E={($_.Group | where month -eq 'feb').amount}} 
0
Esperento57 3 avril 2017 à 06:13