Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#26 Le 29/11/2013, à 10: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, à 10: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, à 10:48)

Hors ligne

#28 Le 29/11/2013, à 11: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, à 11: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, à 12: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