Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1294 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Une équivalence à la commande "echo"

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Une équivalence à la commande "echo"

n°1440516
epo03
Posté le 11-09-2006 à 19:00:09  profilanswer
 

Un problème tout simple : en entrée, j'ai un fichier list1 avec une suite de caractères alphanumériques de 20 octets par ligne ; je souhaite abouter ces lignes les unes après les autres dans un fichier résultat list2 en les séparant par 10 'espaces' sans retour à la ligne.
 
Avec un fichier d'entrée contenant moins de 50000 lignes ça passe sans problème avec la commande echo :
 
for i in `cat list1`
do
echo "$i         \c" >> list2
done
 
Au dela de 50000 lignes (ce qui est mon cas) la commande echo ne fonctionne plus (et toute façon ce serait bien lent). Une idée ?
 
Merci :hello:

mood
Publicité
Posté le 11-09-2006 à 19:00:09  profilanswer
 

n°1440517
betsamee
Asterisk Zeperyl
Posté le 11-09-2006 à 19:07:29  profilanswer
 

sed "s/\n/          /g" list1 > fichierresultat

Message cité 3 fois
Message édité par betsamee le 11-09-2006 à 19:25:18
n°1440520
epo03
Posté le 11-09-2006 à 19:18:39  profilanswer
 

betsamee a écrit :

cat list1 > awk'{print $1"          "}'

Je vais avoir un fichier de sortie avec un nombre de lignes égal à mon fichier list1, non ?

n°1440522
aigles
Posté le 11-09-2006 à 19:21:24  profilanswer
 

betsamee a écrit :

cat list1 > awk'{print $1"          "}'


 :non: Rien à voir avec ce qui est demandé, la commande affiche le premier champ du fichier list1 suivi de blancs et sans aboutement des lignes.
De plus, ce n'est pas une redirection (> ) qu'il faut faire mais un pipe (|). De toutes façon ce pipe est inutile car on peut spécifier le nom du fichier en argument de la commande awk.
 
Edit :ange: Désolé, j'ai lu trop rapidement le post de epo03; $1 convient bien car le contenu de la ligne est alphanumérique, donc pas de séparateur de champ à redouter (théoriquement). Ceci-étant, il est plus prudent d'utiliser $0. Fin-Edit
 
A tester :

# On redefini le séparateur de ligne en sortie comme étant  
# dix espaces, sans saut de ligne : -v ORS="          "
# Toutes les lignes en entrée sont affichées : 1
# Le fichier en entrée est : list1
 
awk -v ORS="          " 1 list1

Une autre solution plus classique toujours avec awk :

awk '{ printf("%s          ",$0)}' list1

Message cité 1 fois
Message édité par aigles le 11-09-2006 à 19:27:44

---------------
Jean Pierre.
n°1440523
epo03
Posté le 11-09-2006 à 19:24:04  profilanswer
 

La solution de Jean Pierre me semble plus adapté à mon pb.
Merci je teste tout ça demain :hello:

n°1440524
betsamee
Asterisk Zeperyl
Posté le 11-09-2006 à 19:26:06  profilanswer
 

ok au temps pour moi :jap:
la solution sed que j ai proposee est erronee?

n°1440646
Sve@r
Posté le 12-09-2006 à 08:56:28  profilanswer
 

betsamee a écrit :

cat list1 > awk'{print $1"          "}'


 

aigles a écrit :

:non: Rien à voir avec ce qui est demandé, la commande affiche le premier champ du fichier list1 suivi de blancs et sans aboutement des lignes.
De plus, ce n'est pas une redirection (> ) qu'il faut faire mais un pipe (|). De toutes façon ce pipe est inutile car on peut spécifier le nom du fichier en argument de la commande awk.


De plus, il faut un espace entre la commande "awk" et ses instructions '{...}'

Message cité 1 fois
Message édité par Sve@r le 12-09-2006 à 09:01:15

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1440651
betsamee
Asterisk Zeperyl
Posté le 12-09-2006 à 09:08:07  profilanswer
 

Sve@r a écrit :

De plus, il faut un espace entre la commande "awk" et ses instructions '{...}'


le > a la place du | est une erreur d'innatention :jap:

n°1441323
epo03
Posté le 12-09-2006 à 18:21:23  profilanswer
 

Les solutions de Jean Pierre fonctionnent parfaitement et à une vitesse supersonique ; demain je teste le sed
Merci à tous :hello:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Une équivalence à la commande "echo"

 

Sujets relatifs
Je recherche la commande lynx compatible windowsCommande sendmail et pieces jointes
[flash/AS] preloader / commande d'un MC ?[javascript] Commande smtp pour envoyer un mail
Convertir un fichier HTML en fichier PDF en ligne de commandecommande dos copy
Insérer des données avec une seule commandecommande getElementById
[RCH]Liste de commande à travers des fichiers TXTArguments en ligne de commande
Plus de sujets relatifs à : Une équivalence à la commande "echo"


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR