Bonjour,
Je ne suis pas un spécialiste en shell mais je sois modifier un fichier sous unix.
Je dois modifier toutes les ligne dans ce fichier commancant par LOV :
LOV "D151008-E1" "ORGANIZATION" "10200"
LOV "D151008-E2" "ORGANIZATION" "10201"
et je dois supprimer les "" autour des 2 derniers champs ( ORGANIZATION et le nombre).
Merci d'avance
Cordialement
Thiabutbito
Forum Programmation.shell modification de ficier ligne commancant par lov et supprimer carartère
Posté par thibautbito .
Étiquettes :
aucune
20
oct.
2008
# Awk
Posté par Grégory Landais . Évalué à 8.
Petite explication pour la culture :
awk parcours le fichier en entrée et éxecute les instructions présentes entre les ' '
/^LOV/ {gsub("\"","",0ドル)} : si la ligne courante commence par LOV on remplace les " par rien
{print 0ドル} : on affiche la ligne en cours quelqu'elle soit
[^] # Re: Awk
Posté par Grégory Landais . Évalué à 7.
dans ce cas une simple modification :
awk '/^LOV/ {gsub("\"","",3ドル);gsub("\"","",4ドル)} {print 0ドル}' fichier_entree > fichier_sortie
Ainsi on applique le gsub seulement sur le 3ème et le 4ème champ
[^] # Re: Awk
Posté par thibautbito . Évalué à 1.
Encore un grand merci pour ce gain de temps.
Cordialement
Thibautbito
[^] # Re: Awk
Posté par thibautbito . Évalué à 0.
Encore un grand merci pour ce gain de temps.
Cordialement
Thibautbito
# Pas trop dur
Posté par Axioplase ıɥs∀ (site web personnel) . Évalué à 1.
awk '{print 1ドル " " 2ドル}' fichier
?
[^] # Re: Pas trop dur
Posté par Axioplase ıɥs∀ (site web personnel) . Évalué à 1.
awk '{if ( /^LOV/ ) print 1ドル " " 2ドル; else print}' fichier[^] # Re: Pas trop dur
Posté par thibautbito . Évalué à 1.
Ca ne marche pas car cela supprime les 2 derniers champs alors qu'il ne devrait que supprimer les "" autours des 2 derniers.
Merci comme même
Thibautbito
# SED hatif
Posté par ecid . Évalué à 3.
sed '/^LOV/ {s/"\([^"]*\)"\(.\)"\([^"]*\)"$/1円2円3円/}' input > output[^] # Re: SED hatif
Posté par gaaaaaAab . Évalué à 2.
Je vous défie de faire plus court :)
sed -ie 's/"//3g' input
[^] # Re: SED hatif
Posté par Jacques L'helgoualc'h (site web personnel) . Évalué à 2.
mais ça ne répond pas exactement au problème, et crée une sauvegarde inpute. Plutôt :
sed -i -e /^LOV/s/\"//3g input
(ou -i.old pour l'extension de sauvegarde).
[^] # Re: SED hatif
Posté par gaaaaaAab . Évalué à 1.
[^] # Re: SED hatif
Posté par ecid . Évalué à 1.
[^] # Re: SED hatif
Posté par gaaaaaAab . Évalué à 1.
C'est con, c'était justement ça qui m'avait fait tripper ;-)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.