bonjour a tous,
Comment modifier chaque ligne dans un fichier ?
je souhaite incrémenté chaque ligne
voici mon fichier ( toto.txt):
1245;tous;ok;78y9;local;14587
numer;tous;ok;7d89;local;12457
g1245;tous;ok;7d89;local;124587
TY1245;tous;ok;7849;local;12487
voici mon script:
fic=`cat toto`
for n in $fic
do
num=`expr 12 + 1`
awk 'BEGIN {flag=0}; /tous/ {flag=1;} flag==1 { print "$num"$0}' $fic
done
Mais ça marche pas !!
le résultat que je souhaite:
13;tous;ok;78y9;local;14587
14;tous;ok;7d89;local;12457
15;tous;ok;7d89;local;124587
16;tous;ok;7849;local;12487
Merci pour toutes réponses.
# pas dure
Posté par fearan . Évalué à 1.
while $( read ligne < fich.txt )
do
echo "$nbl $ligne"
nbl=$(( $nbl + 1 ))
done
voila peut etre remplacer le
while $( read ligne < fich.txt )
par
cat fich.txt | while read ligne
Il ne faut pas décorner les boeufs avant d'avoir semé le vent
# Awk
Posté par Gordon Shumway . Évalué à 1.
awk "BEGIN{num=13}{print num\";\"$0;num++}" toto.txt
# ce qui se comprend bien s'exprime clairement, tout ca...
Posté par xavier . Évalué à 1.
cut -d';' -f2- toto.txt | paste -d';' <(seq -f"l%g" 3 $(wc -l < toto.txt)) - > output.txt
doit le faire.
cependant ton probleme est trop mal exposé pour fournir une reponse exacte, essaye de le decrire avec des mots en exposant les transformations que tu veux effectuer sur toutes les lignes et les eventuelles variables dont dependraient ces transformations (numero de la ligne courante, etc...) et non du code que tu ne maitrises pas.
[^] # oups...
Posté par xavier . Évalué à 1.
est a remplacer par
$((3+$(wc -l < toto.txt)))
si la numerotation doit effectivement _commencer_ a 3
et encore... comme les autres j'ignore les lignes "vides" des exemples que tu proposes :)
# Avec Perl
Posté par Arthur Accroc . Évalué à 2.
Par rapport à l'exemple fourni,
perl -nle '/^[^;]*(;tous;.*)$/ and print $. + 12, $1' toto.txt
fait le boulot et fonctionne pour un cas plus complexe en suivant les suppositions que j'ai faites.
-n assure le parcours des lignes du (ou des) fichier(s) donnés en arguments (comme awk).
-l retire les fins de lignes avant le traitement et en remet après.
$. est le numéro de la ligne courante du fichier.
$1 est la chaîne correspondant à la première (et dans ce cas unique) parenthèse de l'expression rationnelle.
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.