J'ai un fichier comme ça:
other lines . . .
blah blah blah (:34)
Je souhaite trouver l'occurrence de nombres dans le fichier ci-dessus. Je suis venu avec:
grep [0-9] filename
Mais c'est imprimer le tout:
blah blah blah (:34)
Plutôt je veux seulement 34
. Y a-t-il un moyen de le faire?
command-line
bash
text-processing
grep
Fourmis
la source
la source
man grep
Réponses:
Vous pouvez utiliser
grep -E
pour accéder à la syntaxe d'expression régulière étendue ( idem egrep )J'ai créé un fichier de test avec le contenu ci-dessous:
Maintenant, pour écrire seulement les nombres du texte que vous pouvez utiliser
sera sortie.
Ici, "-o" est utilisé pour sortir uniquement le segment correspondant de la ligne, plutôt que le contenu complet de la ligne.
Les crochets (par exemple {et}) indiquent le nombre d’occurrences de la correspondance. {1,4} exige que le caractère ou la classe de caractères précédent apparaisse au moins une fois, mais pas plus de quatre fois.
J'espère que cela t'aides
la source
grep -Eo '[0-9]{1,}' testfile
Vous pouvez utiliser l'expression de parenthèse RE
[:digit:]
spécifiée à la section 9.3.5 de la norme POSIX , en combinaison avec-o
flag pour n'imprimer que les "mots" correspondants.la source
grep -o
n’imprimera que la partie correspondante de la ligne. Sinon, grep imprimera toutes les lignes avec le motif.la source
Je voudrais utiliser curl pour accéder à votre fichier localement ou à distance, puis je voudrais grep lignes avec des nombres enveloppés dans (:), puis couper ces morceaux et écrire dans le fichier
la réponse acceptée ignore qu'il pourrait y avoir des numéros dans les lignes précédentes du fichier, cela fonctionne pour les données d'exemple, mais que se passe-t-il si le fichier est distant?
Local
Dans cet exemple,
output.txt
votre dossier actuel sera remplacé, nous y accéderonsinput.txt
depuis votre dossier public.Éloigné
Dans cet exemple,
output.txt
votre dossier actuel sera écrasé, nous y accédonsinput.txt
depuishttps://yoursite.com/Public/
.la source
curl
quand un simplecat
ferait l'affaire?