10
votes

Select-String to grep mais renvoie simplement des groupes uniques

J'ai un fichier texte contenant de très longues lignes. J'ai besoin d'une seule information de chaque ligne et j'ai besoin de voir les valeurs uniques. Ma pensée originale était d'utiliser Select-String et de spécifier une expression régulière avec un groupe de capture. J'ai regardé plusieurs autres postes mais aucun n'a travaillé. Voici l'équivalent C # rapide et sale: xxx

Comment puis-je faire cela dans PowerShell?

Mise à jour: < p> Test des réponses, j'ai réalisé qu'il y a une exigence supplémentaire. Il peut y avoir plusieurs correspondances par ligne source. Exemple: xxx

Les résultats doivent être: xxx


0 commentaires

3 Réponses :


16
votes
select-string -path <filepath> -pattern 'Path=\"(.*?)\"' -allmatches  |
  foreach-object {$_.matches} |
   foreach-object {$_.groups[1].value} |
    Select-Object -Unique

5 commentaires

S'il vous plaît voir la mise à jour ci-dessus. Notez également que le texte provient d'un fichier.


Mis à jour pour les nouvelles exigences.


Cela a travaillé à l'exception de la gêne unique. Si je remplacis cela avec Select-Object -unique, cela fonctionnait parfaitement. Personnellement, je trouve cela plus clair que le [regex] réponses.


Édité pour corriger. Notez que les escapades anti-backslash des citations doubles semblent inutiles.


Ceci est exactement ce que je cherchais. Merci!



3
votes

Si je suis vous suivant: xxx

mise à jour: xxx


1 commentaires

S'il vous plaît voir la mise à jour ci-dessus. Et cela peut-il être fait avec Select-String?



1
votes

Selon vos commentaires: xxx

soyez prudent: $ {chemin de fichier} lit le fichier comme get-Content , Mais chemin de fichier doit être absolu!


0 commentaires