Bonjour
je veux ajouter le contenu d'un fichier dans un autre voilà le contenu de mes fichiers par titre d'exemple :
monfichier1=
1 Germany
2 Indonesia
3 United Kingdom
4 Malaysia
monfichier2=
Ping: 15 ms
Ping: 29 ms
Ping: 31 ms
Ping: 29 ms
mon but c'est d'avoir un autre fichier 3 comme ça :
1 Germany Ping: 15 ms
2 Indonesia Ping: 29 ms
3 United Kingdom Ping: 31 ms
4 Malaysia Ping: 29 ms
avec cete commande les resultats ne son pa a linear
1 Germany Ping: 15 ms
2 Indonesia Ping: 29 ms
3 United Kingdom Ping: 31 ms
ce que je veux:
while read -u 3 a && read -u 4 b; do echo $a $b >>monfichier3 ; done 3<monfichier1 4<monfichier2
s´il vous plait, je ne veux pas la commande #paste
car mon system ne le permet pas
# printf
Posté par gUI (Mastodon) . Évalué à 4.
Peut-être que en utilisant printf au lieu de echo ?
Avec printf tu peux préciser le nombre de caractères voulus, il complètera par des blancs si nécessaire.
Un exemple
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
# column
Posté par AncalagonTotof . Évalué à 5.
Probablement en pipant le merge dans la commande column.
(quoi ? Du frangilche ? Bah ouais !)
# Quelques lignes de commandes en bash
Posté par MicP . Évalué à 0. Dernière modification le 28 janvier 2020 à 13:28.
[^] # Re: Quelques lignes de commandes en bash
Posté par MicP . Évalué à 1. Dernière modification le 28 janvier 2020 à 13:42.
La dernière ligne de commande n'était pas nécessaire,
et le caractère de tabulation était de trop dans le
printf
donc :
[^] # Re: Quelques lignes de commandes en bash
Posté par gUI (Mastodon) . Évalué à 2.
L'auteur du journal précise qu'il ne faut pas utiliser
paste
.En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Re: Quelques lignes de commandes en bash
Posté par _kaos_ . Évalué à 2.
Certes, mais du coup on a le droit à quoi ?
Matricule 23415
[^] # Re: Quelques lignes de commandes en bash
Posté par MicP . Évalué à 2. Dernière modification le 28 janvier 2020 à 14:33.
Ooops désolé
Alors, avec ça :
[^] # Re: Quelques lignes de commandes en bash
Posté par mino60 . Évalué à -5.
merci beaucoup pour votre aide
j'ai ajouté deux autres fichiers malheureusement je dois executer les commandes 3 fois pour obtenir le résultat que je cherche
longMax=0
while read ligne; do
[ ${#ligne} -gt
{mathjax} longMax ] && longMax=
{#ligne}done <$FreeServertmpa77
exec 6<$FreeServertmpb84
while read ligne1; do
read ligne2 <&6
printf "%-"$longMax"s\t%s\n" "$ligne1" "$ligne2"
done <$FreeServertmpa77 > $FreeServertmpa90
exec 6<&-
longMax=0
while read ligne; do
[ ${#ligne} -gt
{mathjax} longMax ] && longMax=
{#ligne}done <$FreeServertmpa90
exec 6<$FreeServertmpb76
while read ligne1; do
read ligne2 <&6
printf "%-"$longMax"s\t%s\n" "$ligne1" "$ligne2"
done <$FreeServertmpa90 > $FreeServertmpa91
exec 6<&-
longMax=0
while read ligne; do
[ ${#ligne} -gt
{mathjax} longMax ] && longMax=
{#ligne}done <$FreeServertmpb77
exec 6<$FreeServertmpa91
while read ligne1; do
read ligne2 <&6
printf "%-"$longMax"s\t%s\n" "$ligne1" "$ligne2"
done <$FreeServertmpb77 > $FreeServertmpe79
exec 6<&-
[^] # Re: Quelques lignes de commandes en bash
Posté par mino60 . Évalué à -5.
merci ..par contre je dois executer 3 fois la commande pour ajouter deux fichiers supplémentaires
longMax=0
while read ligne; do
[ ${#ligne} -gt
{mathjax} longMax ] && longMax=
{#ligne}done <$FreeServertmpa77
exec 6<$FreeServertmpb84
while read ligne1; do
read ligne2 <&6
printf "%-"$longMax"s\t%s\n" "$ligne1" "$ligne2"
done <$FreeServertmpa77 > $FreeServertmpa90
exec 6<&-
longMax=0
while read ligne; do
[ ${#ligne} -gt
{mathjax} longMax ] && longMax=
{#ligne}done <$FreeServertmpa90
exec 6<$FreeServertmpb76
while read ligne1; do
read ligne2 <&6
printf "%-"$longMax"s\t%s\n" "$ligne1" "$ligne2"
done <$FreeServertmpa90 > $FreeServertmpa91
exec 6<&-
longMax=0
while read ligne; do
[ ${#ligne} -gt
{mathjax} longMax ] && longMax=
{#ligne}done <$FreeServertmpb77
exec 6<$FreeServertmpa91
while read ligne1; do
read ligne2 <&6
printf "%-"$longMax"s\t%s\n" "$ligne1" "$ligne2"
done <$FreeServertmpb77 > $FreeServertmpe79
exec 6<&-
[^] # Re: Quelques lignes de commandes en bash
Posté par MicP . Évalué à 1. Dernière modification le 29 janvier 2020 à 08:53.
Ou alors, avec ce qui suit
[^] # Re: Quelques lignes de commandes en bash
Posté par MicP . Évalué à 1.
Ahhh zut!
Une petite erreur sur les noms de variables que vous aviez utilisés :
# lam sur unix ou nl + join sur linux
Posté par cd9 . Évalué à 1. Dernière modification le 14 février 2020 à 20:38.
Sur Unix, il existe la commande
lam fichier1 fichier2 > fichier 3
Sur linux :
Numéroter le fichier2, puis faire un join sur les deux fichiers
nl fichier2 > fichier2nl
join fichier1 fichier2nl > fichier3
rm fichier2nl
[^] # Re: lam sur unix ou nl + join sur linux
Posté par cd9 . Évalué à 1.
oups j'avais pas tout lu la demande initiale sur toute sa longueur;
Toutes mes excuse.
# sed + awk
Posté par cd9 . Évalué à 1.
sed 'R fichier2' fichier1 | awk '(NR%2){printf("%-20s", $0)}(!(NR%2)){printf("%s\n", $0)}' > fichier3
Mettre les bonnes quote pour que ça marche avec votre shell,
Remplacer la valeur 20 par celle qui vous convient, ça fixe la longueur avant le mot Ping dans votre exemple.
Explications :
sed lit une ligne de fichier1 puis une ligne de fichier2, etc…
awk : les lignes impaires (NR%2) : on imprime juste le contenu d'une ligne et pour les lignes paires on imprime le contenu de la ligne plus un saut de ligne.
[^] # Re: sed + awk
Posté par zipe31 . Évalué à 1.
Salut,
Ou juste avec sed ;-)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.