Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 :

ktd971 a écrit :

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 22.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. sad

Dernière modification par Korak (Le 05/08/2020, à 10:56)


OS: Ubuntu 22.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,

ktd971 a écrit :

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 sad

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 22.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