Bonjour,
j'y connais pas grand chose en ligne de commande unix mais j'ai un besoin ponctuel.
Si je pouvais avoir une piste vers laquelle m'orienter rapidement.
J'ai un texte qui ressemble à ceci:
1519 créer une branche toto 23/03/2012 Branch1.0.X : first checkin
je voudrait extraire le chiffre (1519) en début de ligne avec des outils que j'ai sous la main. J'ai commencé par regarder sed mais la syntaxe est un peu ardue.
Quelqu'un aurait une idée ou une syntaxe sed approchante? Si y'a une explication, c'est encore mieux ;)
Merci beaucoup d'avance
# cut
Posté par Pierre Tramo (site web personnel) . Évalué à 9.
Perso, j'utiliserais cut, sed est un peu overkill juste pour ça. Si ton chiffre est toujours en 1ère position, ça donnerais:
cut -d " " -f 1
# awk !
Posté par tiot (site web personnel) . Évalué à 8.
pour cela le plus simple c'est awk :
# sed
Posté par fastjack . Évalué à 1.
sed -e "s/([0-9]{1,4})(.*)/\1/"
\(^[0-9]\{1,4\}\) = paterne 1 ( 1519 ) 1 à 4 chiffre en début de chaîne
\(.*) = paterne 2, les autres caractères
\1 = affiche le paterne 1
@+
[^] # Re: sed
Posté par NeoX . Évalué à 2.
paterne : heu, ca exist ca ?
en anglais : Pattern
en francais : Motif
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 2.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: sed
Posté par NeoX . Évalué à 4.
oui oui ca existe,
merci,
mais ca ne veut pas dire "motif" et ce n'est pas une traduction de "Pattern" en anglais
# Autre solution
Posté par Axioplase ıɥs∀ (site web personnel) . Évalué à 3.
J'utiliserais la solution awk fournie plus haut, mais juste parce que je peux, je poste aussi une version pour grep.
grep -o "^[0-9]\+"
[^] # Re: Autre solution
Posté par cosmocat . Évalué à 2.
au début, j'avais prévu ça mais le grep que j'ai sous la main ne gère pas l'option -o
# SED
Posté par Michaël (site web personnel) . Évalué à 3.
Salut, voilà un filtre SED qui reformate tes lignes
Il transforme
en
Ensuite tu peux travailler tes données comme tu veux grâce à AWK (avec l'option
-F '|'
indiquant que les champs sont séparés par des|
)Exemple:
Ici l'appel à AWK sélectionne les champs dont l'user est toto, affiche le nombre myst`ere et le message de commit.
# Merci
Posté par cosmocat . Évalué à 2.
Merci à tous, j'ai réussi à faire ce que je voulais!
Enfin, à avancer, car j'ai un autre problème mais c'est une autre histoire ;)
# bash
Posté par ✅ ffx . Évalué à 4.
[^] # Re: bash
Posté par Michaël (site web personnel) . Évalué à 2.
Si il en a un ça va, si il veut filtrer un fichier de logs, il vaut beaucoup mieux passer par un filtre externe (je prooposais sed) du genre
beacoup plus efficace que si tu remplaces la loop avec une édition des valeurs lues.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.