bonjour,
j'ai un probleme avec linux (l'editeur VI plutot). J'ai un fichier qui contient que des lignes (une seule colonne). Chaque ligne contient un chiffre, pr ex:
1
3
56
21
25
64
23
Je veux maintenant changer ces lignes en des conlonnes, par ex:
1 3 56 21 25 64 23
comment peux-je faire, s-v-p? Merci bc
# "J"
Posté par Gyro Gearllose . Évalué à 6.
Ca permet de joindre les lignes.
Si tu as la flemme de rester appuyé sur la touche 'j' de ton clavier, tu fais la séquence suivante en mode commande : ":%j" pour joindre toutes les lignes, du début à la fin. Sinon, si tu ne veux faire cette opération que de la ligne 17 à la ligne 42 ":17,42j"
A noter également que la commande j insère un espace entre la fin de la ligne courante et le début de la ligne suivante, à l'endroit de la jointure :
1
2
devient
1 2
alors que j! ne le fait pas :
1
2
devient
12
Voilà, en espérant que ça répond à ta question.
[^] # Re: "J"
Posté par cachanais . Évalué à 1.
[^] # Re: "J"
Posté par cachanais . Évalué à 1.
Je suis désolé de te déranger encore une fois. On peut exécuter la technique que tu me montre quand on est dans VI, le problème ici c'est que je suis dans le "terminal" de linux et j'ai plusieurs fichiers à changer des lignes en colonnes, je ne peux pas entrer plusieurs fois dans le VI parce que ça coût bcp de temps, tu as une autre manière?
[^] # Re: "J"
Posté par totof2000 . Évalué à 3.
# tr
Posté par schyzomarijks . Évalué à 2.
man tr http://unixhelp.ed.ac.uk/CGI/man-cgi?tr+1
[^] # Re: tr
Posté par totof2000 . Évalué à 2.
CAT SERT A CONCATENER DES FICHIERS ET UN CAT | AUTRE_COMMANDE NE SERT A RIEN
[^] # Re: tr
Posté par free2.org . Évalué à 2.
Cela permet parfois aussi de ne pas lire le man d'une commande, pour trouver quelle est l'option pour lui passer un nom de fichier en parametre.
[^] # Re: tr
Posté par schyzomarijks . Évalué à 2.
plus d'info sur le post ci-dessous.
[^] # Re: tr
Posté par totof2000 . Évalué à 4.
Cela permet parfois aussi de ne pas lire le man d'une commande, pour trouver quelle est l'option pour lui passer un nom de fichier en parametre.
... Ce qui est completement idiot.
les commandes en général prennent le nom de fichier sans option particuliere, et si une commande prend les données sur l'entrée standard, commande <fichier doit suffire.
Par contre il faut penser qu'un cat|commande te fait effectuer un fork+exe ce qui prend du temps, non négligeable si tu dois faire ca dans une boucle a parcourir 1 million de fois.
[^] # Re: tr
Posté par tontonflingueur . Évalué à 1.
> d'en avoir rencontré.
Bah oui, par exemple un script perl (ou autre) à deux balles qui se contente de lire dans stdin, et pour lequel t'as pas envie de coder de paramètres.
[^] # Re: tr
Posté par netsurfeur . Évalué à 3.
cat f1 f2 f3 | script_perl_a_deux_balles.pl
par
script_perl_a_deux_balles.pl f1 f2 f3
Cf la page man perlop:
[^] # Re: tr
Posté par cachanais . Évalué à 2.
Je suis nul en anglais. Peux-tu m'expliquer en francais? J'ai plusieurs fichier comme ca, je veux faire une compilation une seule fois pour obtenir des nouveaux fichiers qui contiennent que des colonnes. D'avance merci
[^] # Re: tr
Posté par schyzomarijks . Évalué à 2.
donc tr \\n ' ' transforme le caractère \n (qui correspond à une fin de ligne) en un espace.
la commande cat transmet un flux à l'utilitaire tr correspondant au fichier. tr fait ensuite la
pour traiter un ensemble de fichier, c'est (en admettant que tes fichiers ont l'extension dat
for i in *.dat; do
cat "$i" | tr \\n ' ' > "$i.new"
done;
la fin ligne > "$i.new" stocke dans un fichier .new le résultat.
va lire http://lea-linux.org/cached/index/Dev-shell_script.html pour un cours plus complet.
Bonne continuation
PS : Pour totof2000
# tr --help
Usage: tr [OPTION]... ENSEMBLE1 [ENSEMBLE2]
Translate, squeeze, and/or delete characters from standard input,
writing to standard output.
...
Rapporter toutes anomalies à <bug-coreutils@gnu.org>.
donc il faut utiliser cat, j'attends des excuses :-)
[^] # Re: tr
Posté par totof2000 . Évalué à 3.
Non tu n'auras pas d'excuses :)
[^] # Re: tr
Posté par totof2000 . Évalué à 3.
[^] # Re: tr
Posté par schyzomarijks . Évalué à 2.
[^] # Re: tr
Posté par cachanais . Évalué à 2.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.