Recherche du dernier élément d'une ligne à l'aide de grep


12

J'essaie de prendre le dernier mot ou la dernière phrase en utilisant grep pour un motif spécifique. Dans cet exemple, il s'agirait de la dernière virgule à la fin de la ligne:

Blah,3,33,56,5,Foo 30,,,,,,,3,Great Value

Et donc la sortie souhaitée pour cette ligne serait "Great Value". Toutes les lignes sont également de longueurs différentes, mais ont toujours une seule virgule précédant les derniers mots.

Fondamentalement, je voudrais simplement sortir de la dernière virgule à la fin de la ligne. Je vous remercie!


9
Avez-vous pensé à utiliser awk -F, '{print $NF}'?
Steeldriver

Obtenir le dernier élément de la ligne est une tâche facile, mais comment identifier cette ligne? je veux dire, comment une commande ou un script peut-il regarder la ligne et dire "oui, c'est celui-là"? quel est le motif qui identifie cette ligne?
Sergiy Kolodyazhnyy

5
grepn'est pas l'outil pour ce travail.
Kusalananda

Réponses:


27

Ici:

grep -o '[^,]\+$'
  • [^,]\+correspond à un ou plusieurs caractères qui ne sont pas ,à la fin de la ligne ( $)

  • -o imprime uniquement la partie correspondante

Exemple:

% grep -o '[^,]\+$' <<<'Blah,3,33,56,5,Foo 30,,,,,,,3,Great Value'
Great Value

A fonctionné comme un charme! J'essayais d'utiliser une combinaison de "." et d'autres expressions avant, mais cela fonctionne beaucoup mieux, très apprécié.
reversebottle

hmm, j'aurais utilisé -Eoet ensuite pas eu besoin d'échapper à la+
Baldrickk

@Baldrickk -Epermet l'ERE, c'est pourquoi.
heemayl

@ heemayl ouais, je sais pourquoi. J'ai tendance à l'utiliser car c'est une syntaxe regex plus courante
Baldrickk

15

awkJ'aime toujours voir une solution, alors la voici (a voté pour la bonne solution!):

% awk -F, '{print $NF}'  <<<'Blah,3,33,56,5,Foo 30,,,,,,,3,Great Value'
Great Value

3
Ce devrait être la bonne réponse. Bien que vous puissiez utiliser grep, vous pouvez également enfoncer une vis avec un marteau.
wilsotc
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.