supprimer certain retour chariot

supprimer certain retour chariot - Shell/Batch - Programmation

Marsh Posté le 30-05-2005 à 11:55:48    

bonjour,
 
Je souhaiterais savoir comment supprimer dans un fichier text certain retour chariot.
 
ex de fichier à transformer :
0;var1
var2
 
 
var3
 
1;var4;var5
var6
 
 
1;var7 var8
 
et le fichier que je voudrais en sortie :
0;var1 var2 var3
1;var4;var5 var6
1;var7 var8
 
merci d'avance pour votre aide

Reply

Marsh Posté le 30-05-2005 à 11:55:48   

Reply

Marsh Posté le 30-05-2005 à 12:29:14    

En quoi ? Shell Unix (lequel ?), ou batch ?
 
Dans le premier cas, ce doit être faisable avec awk.


Message édité par Elmoricq le 30-05-2005 à 12:30:23
Reply

Marsh Posté le 30-05-2005 à 12:48:20    

dans le second cas  
voir avec setx.exe (toolkit W2K)

Reply

Marsh Posté le 30-05-2005 à 13:22:27    

excusez moi, c'est bien avec shell.
 
Pour le commande awk, je vois pas trop comment tu l'utilises. Pourrais tu m'éclairer?

Reply

Marsh Posté le 30-05-2005 à 13:41:53    

ptinat a écrit :

excusez moi, c'est bien avec shell.
 
Pour le commande awk, je vois pas trop comment tu l'utilises. Pourrais tu m'éclairer?


 
 
Tu peux essayer ceci (dans l'exemple ci-dessous, les données sont dans "fic1" ) :

Code :
  1. #!/bin/ksh
  2. awk '
  3.     # Passe une ligne si celle-ci debute par un chiffre
  4.     # et pas la premiere ligne examinee (evite que la
  5.     # toute premiere ligne soit vide)
  6.     # Dans awk, NR = le numero de la ligne courante
  7.     if ( $0 ~ /^[0-9]/ && NR != 1 )
  8.     {
  9.         printf("\n" );
  10.     }
  11.     # Sinon, imprime a la suite, mais seulement si la ligne
  12.     # contient autre chose que des espaces
  13.     if ( $0 ~ /^ *$/ )
  14.     {
  15.         printf("%s ",$0);
  16.     }
  17. }
  18. END { printf("\n" ); }' fic1


 
 
 
En règle générale, "man commande_unix" renvoie toutes les informations nécessaires. ;)


Message édité par Elmoricq le 30-05-2005 à 13:43:46
Reply

Marsh Posté le 30-05-2005 à 14:02:40    

Je n'arrive pas à faire marcher le programme.
 
ps: j'ai oublié de dire que je ne maitrise pas bien les commandes Shell.

Reply

Marsh Posté le 30-05-2005 à 14:07:48    

Citation :

Je n'arrive pas à faire marcher le programme.


 
Tu n'es pas assez vague, pourrais-tu être moins précis ?
 
Qu'est-ce que tu ne parviens pas à faire ?

Reply

Marsh Posté le 30-05-2005 à 14:13:48    

Elmoricq a écrit :

Tu n'es pas assez vague, pourrais-tu être moins précis ?
 
Qu'est-ce que tu ne parviens pas à faire ?


 
 
Quand j’exécute le programme, ça saute 3 lignes sur l’écran et je ne sais pas ce qu’il a fait (il n’y a pas de messages d’erreurs)
 
il affiche le résultat où? et si on veut le rediriger dans un fichier, il le définit où?

Reply

Marsh Posté le 30-05-2005 à 14:22:16    

Oui, j'ai fait une erreur de frappe.
 
Remplace la ligne :
 

Code :
  1. if ( $0 ~ /^ *$/ )


(si $0 est une ligne qui n'est remplie que d'espaces... )
 
par :
 

Code :
  1. if ( $0 !~ /^ *$/ )


(si $0 est une ligne qui contient autre chose que des espaces...)


Message édité par Elmoricq le 30-05-2005 à 14:26:18
Reply

Marsh Posté le 30-05-2005 à 14:31:44    

Il n’y a pas d’espace, mon fichier est exactement comme l’exemple que j’ai donné.
Et le résultat de la commande affiche 3 lignes vides :


mon_répertoire > ./prog1.txt
 
 
 
mon_répertoire >


 
voilà ce que j'obtiens

Reply

Marsh Posté le 30-05-2005 à 14:31:44   

Reply

Marsh Posté le 30-05-2005 à 14:31:52    

Il n’y a pas d’espace, mon fichier est exactement comme l’exemple que j’ai donné.
Et le résultat de la commande affiche 3 lignes vides :


mon_répertoire > ./prog1.txt
 
 
 
mon_répertoire >


 
voilà ce que j'obtiens

Reply

Marsh Posté le 30-05-2005 à 14:33:22    

Oui, oui, j'ai édité en catastrophe et posté une correction quand, pris d'un doute, j'ai copié-collé mon exemple pour tenter de reproduire ton comportement, et que j'ai eu la même chose que toi avec mon fichier de tout à l'heure.
 
J'sais pas ce que j'ai fait entre mon terminal et le forum, doit être fatigué.  :o


Message édité par Elmoricq le 30-05-2005 à 14:34:19
Reply

Marsh Posté le 30-05-2005 à 14:36:32    

Oui ça marche! Merci beaucoup de ton aide

Reply

Marsh Posté le 30-05-2005 à 15:21:26    

Encore moi, j'ai un autre soucis.
En faite, je viens de me rendre compte que la condition : chaque ligne commence par un chiffre n’est pas tout à fait exacte.
La vrai condition est que chaque ligne doit commencer par un seul chiffre, soit 0 soit 1.
 
Désolé de ne pas avoir bien préciser tout au départ.

Reply

Marsh Posté le 30-05-2005 à 15:21:33    

Encore moi, j'ai un autre soucis.
En faite, je viens de me rendre compte que la condition : chaque ligne commence par un chiffre n’est pas tout à fait exacte.
La vrai condition est que chaque ligne doit commencer par un seul chiffre, soit 0 soit 1.
 
Désolé de ne pas avoir bien préciser tout au départ.

Reply

Marsh Posté le 30-05-2005 à 16:53:10    

Dans ce cas, remplace :
 

if ( $0 ~ /^[0-9]/ && NR != 1 )


 
Par :

if ( $0 ~ /^[0-1];/ && NR != 1 )


Ce qui signifie pour l'expression régulière (le contenu entre les deux '/') : "si le premier caractère est 0 ou 1, et qu'il est immédiatement suivi d'un point-virgule"

Reply

Marsh Posté le 31-05-2005 à 09:54:41    

merci bcp là ça marche et g terminé :)
vrai de vrai :)

Reply

Sujets relatifs:

Leave a Replay

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