[Shell] Remplacement de retour chariot

Remplacement de retour chariot [Shell] - Shell/Batch - Programmation

Marsh Posté le 15-06-2006 à 17:39:48    

Bonjour,
 
J'ai déjà cherché sur le forum mais le cas abordé ne correspond pas vraiment au mien.
 
Voici mon fichier en entrée
 
ab;cd
ab;cd;
ef;gh;
ij;kl
ab;cd;
ef;gh
 
J'aimerais remplcer les ";\n" par des "-" pour obtenir le résultat suivant
ab;cd
ab;cd-ef;gh-ij;kl
ab;cd-ef;gh
 
J'ai déjà utilisé des commandes sed et awk, mais dans chaque cas, il me remplace le bon ";" mais laisse le "\n"
 
Donc à la fin je me retrouve avec
 
ab;cd
ab;cd-
ef;gh-
ij;kl
ab;cd-
ef;gh
 
Donc pour résumer il me trouve bien mon caractère à remplacer, mais supprime pas le retour chariot...
 
Comment faire ?
 
Edit: Je suis en ksh


Message édité par focke_oeuf le 15-06-2006 à 17:44:13
Reply

Marsh Posté le 15-06-2006 à 17:39:48   

Reply

Marsh Posté le 15-06-2006 à 20:17:55    

Je débute en KSH, mais as tu essayé le cat ?
 
cat fichier |&
while read -p ligne
do
 echo $ligne
 # la tu concatènes dans une autre variable
 nyal $ var1="$var1 $ligne"
 ou
 nyal $ var1=`echo "$var1 $ligne"`
 
done
# Et la tu fais un  
echo $var1 > ton fichier.
 
 

Reply

Marsh Posté le 15-06-2006 à 20:19:54    

Excuse, mais enlève nyal $ !! C'est le prompt !!

Reply

Marsh Posté le 15-06-2006 à 23:41:03    

je te propose ceci :
 
 

cat monFichier | awk '
/;$/ { printf ( "%s-" , substr($0,1,length($0) - 1),"-" ) }
!/;$/ { print  }
'

Reply

Marsh Posté le 16-06-2006 à 11:20:38    

Merci ça marche nickouel.
 
Je m'étais trop focalisé sur la manière d'obtenir ça en une seule ligne de commande...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed