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
# Awk
Posté par Grégory Landais (site web personnel) . É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 (site web personnel) . É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.