#26 Le 29/11/2013, à 09:45
- credenhill
Re : [Resolu] lire un fichier ligne par ligne en bash
hello
$ awk 'BEGIN{FS=OFS=""} {if(substr($0, 5, 1)==0)$2=$2 "."; print}' fichier
99802187971376187106302119011332813
99902186911375520106402117951332146
10.0002185851374854106502116891331479
10.0102184791374187106602115821330806
10.0202183731373520106702114761330140
10.0302182671372854106802113701329473
$
Hors ligne
#27 Le 29/11/2013, à 09:48
- capitainabloc
Re : [Resolu] lire un fichier ligne par ligne en bash
oui, j'ai vu ça.
Je vais essayer de traduire ca en sh.
Dernière modification par capitainabloc (Le 29/11/2013, à 09:48)
Hors ligne
#28 Le 29/11/2013, à 10:07
- capitainabloc
Re : [Resolu] lire un fichier ligne par ligne en bash
pingouinux a écrit :
Attention, en #23, ce sont des commandes bash, et non sh.
while read ligne; do [ "$(cut -c5 <<<"$ligne")" = 0 ] && sed 's/^../&./' <<<"$ligne" || sed 's/^./&./' <<<"$ligne"; done <yo.txt
ok, il semble que j'ai du mal à transposer ça en sh.
je manipule, mais j'ai toujours des erreurs.
Hors ligne
#29 Le 29/11/2013, à 10:16
- Watael
Re : [Resolu] lire un fichier ligne par ligne en bash
salut,
<<< remplace un pipe d'un echo, par exemple :
echo "$line" | cut -c5
une partie de awk_golf ?
awk 'BEGIN{FS=""}$5==0{sub("^..","&.")}1' fichier.in
99802187971376187106302119011332813
99902186911375520106402117951332146
10.0002185851374854106502116891331479
10.0102184791374187106602115821330806
10.0202183731373520106702114761330140
10.0302182671372854106802113701329473
XD
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#30 Le 29/11/2013, à 11:19
- capitainabloc
Re : [Resolu] lire un fichier ligne par ligne en bash
ok, merci beaucoup pour le tuyau,
j'ai donc réussi avec ce code:
#!/bin/sh
while read line
do
if [ "$(echo "$line" | cut -c5)" = 0 ]
then
echo "$line" | sed 's/^../&./'
else
echo "$line" | sed 's/^./&./'
fi
done < yo.txt
Hors ligne