Une équivalence à la commande "echo" - Shell/Batch - Programmation
Marsh Posté le 11-09-2006 à 19:07:29
sed "s/\n/ /g" list1 > fichierresultat
Marsh Posté le 11-09-2006 à 19:18:39
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 ?
Marsh Posté le 11-09-2006 à 19:21:24
betsamee a écrit : cat list1 > awk'{print $1" "}' |
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 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 |
Une autre solution plus classique toujours avec awk :
awk '{ printf("%s ",$0)}' list1 |
Marsh Posté le 11-09-2006 à 19:24:04
La solution de Jean Pierre me semble plus adapté à mon pb.
Merci je teste tout ça demain
Marsh Posté le 11-09-2006 à 19:26:06
ok au temps pour moi
la solution sed que j ai proposee est erronee?
Marsh Posté le 12-09-2006 à 08:56:28
betsamee a écrit : cat list1 > awk'{print $1" "}' |
aigles a écrit : 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, il faut un espace entre la commande "awk" et ses instructions '{...}'
Marsh Posté le 12-09-2006 à 09:08:07
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
Marsh Posté le 12-09-2006 à 18:21:23
Les solutions de Jean Pierre fonctionnent parfaitement et à une vitesse supersonique ; demain je teste le sed
Merci à tous
Marsh Posté le 11-09-2006 à 19:00:09
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