Pages : 1
#1 Le 05/08/2020, à 09:22
- ktd971
concaténer deux lignes
Bonjour tout le monde,
J'ai besoin d'aide pour un petit truc !
Je n'y arrive pas par moi, mais bon je suis au début de l'aventure ligne de commande du coup je sollicite votre aide .
je veux concaténer ces deux lignes et aussi placer l'ip devant le nom
5922_2418_8316_SAINT_SAENS
101.228.197.214
pour avoir un truc comme ça (pour un fichier hosts )
101.228.197.214 5922_2418_8316_SAINT_SAENS
Merciiii beaucoup
Dernière modification par ktd971 (Le 05/08/2020, à 09:23)
Hors ligne
#2 Le 05/08/2020, à 09:52
- diesel
Re : concaténer deux lignes
Elles sont où tes deux lignes ? Dans un fichier, en sortie d'une commande, ailleurs ?
Si c'est dans un fichier, il n'y a que ces deux lignes ou il y en a d'autres ?
Amicalement.
Jean-Marie
Dernière modification par diesel (Le 05/08/2020, à 09:53)
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#3 Le 05/08/2020, à 10:02
- pingouinux
Re : concaténer deux lignes
Bonjour,
Si c'est un fichier qui ne contient que ces deux lignes, voici une solution :
tac fichier | paste - -
ou
paste - - < <(tac fichier)
Dernière modification par pingouinux (Le 05/08/2020, à 10:04)
Hors ligne
#4 Le 05/08/2020, à 10:09
- Korak
Re : concaténer deux lignes
Bonjour,
Tu donnes la destination :
pour un fichier hosts
Mais si tu ne donnes pas l'origine des lignes en question, pas facile de te répondre.
Personnellement, je ne sais pas t'aider. Mais j'essaie de faire avancer le schmilblick.
OS: Ubuntu 24.04 64 bits + Windows 11 64 bits en dualboot (BIOS UEFI, Secure Boot activé et table de partitions GPT)
PC portable HP 17-CP0308NF Processeur: AMD Ryzen 7 5700U avec carte graphique AMD Lucienne intégrée au processeur. Mémoire vive: 16 Go RAM
Quand vous ne trouvez pas la solution à un problème, cherchez des pistes menant à la solution !
Hors ligne
#5 Le 05/08/2020, à 10:24
- ktd971
Re : concaténer deux lignes
Alors du coup ça devient deux fois plus compliqué!
j'ai un dossier qui contient 71 fichier dans ces fichiers il y a des informations
cat 5922_2418_8316_SAINT_SAENS
REM 5922_2418_8316_SAINT_SAENS
[connection]
host=101.228.197.214
port=22
password=2cd8d39e
[options]
use_encoding_1=1
copyrect=1
viewonly=0
fullscreen=0
8bit=1
shared=1
Dans ce fichier je recup que le nom et lip avec cette commande
sed -n -e 1p -e 3p 5922_2418_8316_SAINT_SAENS
et et du coup j'ai
5922_2418_8316_SAINT_SAENS
101.228.197.214
Dernière modification par ktd971 (Le 05/08/2020, à 10:59)
Hors ligne
#6 Le 05/08/2020, à 10:37
- Korak
Re : concaténer deux lignes
Il y a certainement moyen de faire quelque chose de réutilisable quelque soit le contenu de Ligne1 et Ligne2.
Mon idée est la suivante :
1) Récupérer le contenu de Ligne1.
2) Récupérer le contenu de Ligne2.
3) Dans LigneRésultat, mettre le contenu de Ligne1 suivi du contenu de Ligne2 avec éventuellement un nombre x d'espaces entre la fin de Ligne1 et le début de Ligne2.
4) Envoyer le contenu de LigneRésultat où on le désire.
Pour cela, il faut savoir :
- où trouver le contenu de Ligne1 et Ligne2.
- où envoyer le contenu de LigneRésultat (dans le cas présent on le sait : dans un fichier nommé hosts).
Édit :
J'ai corrigé : j'avais oublié le mot "moyen" dans ma 1ère phrase.
Dernière modification par Korak (Le 05/08/2020, à 10:56)
OS: Ubuntu 24.04 64 bits + Windows 11 64 bits en dualboot (BIOS UEFI, Secure Boot activé et table de partitions GPT)
PC portable HP 17-CP0308NF Processeur: AMD Ryzen 7 5700U avec carte graphique AMD Lucienne intégrée au processeur. Mémoire vive: 16 Go RAM
Quand vous ne trouvez pas la solution à un problème, cherchez des pistes menant à la solution !
Hors ligne
#7 Le 05/08/2020, à 10:47
- pingouinux
Re : concaténer deux lignes
Essaye :
sed -n '1h;3{s/host=//;G;s/\n/ /p}' fichier
Hors ligne
#8 Le 05/08/2020, à 11:00
- ktd971
Re : concaténer deux lignes
sed -n '1h;3{s/host=//;G;s/\n/ /p}' 5922_2418_8316_SAINT_SAENS
REM 5922_2418_8316_SAINT_SAENS
Hors ligne
#9 Le 05/08/2020, à 11:20
- ktd971
Re : concaténer deux lignes
J'ai réussi à obtenir
5922_2418_8316_SAINT_SAENS 101.228.197.214
maintenant je veux passer l'ip devant le nom, mais quand je fais un awk -F " " '{print $2" " $1}'
Hors ligne
#10 Le 05/08/2020, à 11:26
- FrancisFDZ
Re : concaténer deux lignes
Bonjour,
J'ai réussi à obtenir
5922_2418_8316_SAINT_SAENS 101.228.197.214
maintenant je veux passer l'ip devant le nom, mais quand je fais un awk -F " " '{print $2" " $1}'
Et ?
-- On peut avoir des raisons de se plaindre et n'avoir pas raison de se plaindre --
[Victor Hugo]
Hors ligne
#11 Le 05/08/2020, à 11:38
- ktd971
Re : concaténer deux lignes
ça fonctionne pas j'ai toujours
5922_2418_8316_SAINT_SAENS 101.228.197.214
il ne veut pas passer l'ip devant le nom
Dernière modification par ktd971 (Le 05/08/2020, à 11:39)
Hors ligne
#12 Le 05/08/2020, à 11:39
- Korak
Re : concaténer deux lignes
Tu ne devrais pas inverser deux variables ?
Genre print $1" " $2 à la place de print $2" " $1 dans cette commande : awk -F " " '{print $2" " $1}'
Dernière modification par Korak (Le 05/08/2020, à 11:43)
OS: Ubuntu 24.04 64 bits + Windows 11 64 bits en dualboot (BIOS UEFI, Secure Boot activé et table de partitions GPT)
PC portable HP 17-CP0308NF Processeur: AMD Ryzen 7 5700U avec carte graphique AMD Lucienne intégrée au processeur. Mémoire vive: 16 Go RAM
Quand vous ne trouvez pas la solution à un problème, cherchez des pistes menant à la solution !
Hors ligne
#13 Le 05/08/2020, à 11:40
- diesel
Re : concaténer deux lignes
Alleï, une version moche mais qui fonctionne :
{ grep "host=" 5922_2418_8316_SAINT_SAENS | cut -d= -f2 ; grep "REM " 5922_2418_8316_SAINT_SAENS | cut -d" " -f2 ; } | tr '\n' ' ' ; echo
Amicalement.
Jean-Marie
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#14 Le 05/08/2020, à 11:47
- ktd971
Re : concaténer deux lignes
chez moi j'ai
{ grep "host=" 5922_2418_8316_SAINT_SAENS | cut -d= -f2 ; grep "REM " 5922_2418_8316_SAINT_SAENS | cut -d" " -f2 ; } | tr '\n' ' ' ; echo
en réponse à la commande
5922_2418_8316_SAINT_SAENS
Hors ligne
#15 Le 05/08/2020, à 11:56
- ktd971
Re : concaténer deux lignes
tant pis je vais faire les 71 trucs à la main j'ai perdu trop temps il faut que j'avance merci pour tout
Hors ligne
#16 Le 05/08/2020, à 12:01
- pingouinux
Re : concaténer deux lignes
Si tu modifies ton fichier exemple (en #5), en cours de route, on ne peut pas s'en sortir.
Avec ton fichier actuel :
$ cat 5922_2418_8316_SAINT_SAENS
REM 5922_2418_8316_SAINT_SAENS
[connection]
host=101.228.197.214
port=22
password=2cd8d39e
[options]
use_encoding_1=1
copyrect=1
viewonly=0
fullscreen=0
8bit=1
shared=1
$ sed -n '1{s/.* //;h};3{s/host=//;G;s/\n/ /p}' 5922_2418_8316_SAINT_SAENS
101.228.197.214 5922_2418_8316_SAINT_SAENS
ou bien
$ sed -n '1{s/.* //;h};3{s/.*=//;G;s/\n/ /p}' 5922_2418_8316_SAINT_SAENS
101.228.197.214 5922_2418_8316_SAINT_SAENS
Dernière modification par pingouinux (Le 05/08/2020, à 12:03)
Hors ligne
#17 Le 05/08/2020, à 12:19
- kamaris
Re : concaténer deux lignes
Méthode un peu robuste au niveau des espacements :
awk -F'=|[[:blank:]]+' 'NR==1{s=$2} NR==3{print $2" "s}' fichier
Hors ligne
#18 Le 05/08/2020, à 12:20
- ktd971
Re : concaténer deux lignes
C'est bon merciiiiiiii
Merci à tous je passe le sujet en résolu
Dernière modification par ktd971 (Le 05/08/2020, à 12:28)
Hors ligne