Contenu | Rechercher | Menus

Annonce

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

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.

#1 Le 18/03/2017, à 08:55

ar barzh paour

[Résolu] coller un texte dans une sélection

bonjour à tous en cette belle matinée

voilà ce que j'essaie de faire    EDIT ( dans gedit  )
#########################################
1- sélectionner un texte à la souris
2- triturer le texte sélectionné pour obtenir : texte2
3- remplacer le texte sélectionné en 1 par texte2
#########################################

EDIT : voir une solution dans le post #19

ce que je sais faire :1 et 2

1 - sélection avec la souris

2 - avec xsel    :

texte1="$xsel -o)"
texte2=$(programme-de-modification-de-texte1)

3 - c'est ça que je ne sais pas faire

Dernière modification par ar barzh paour (Le 20/03/2017, à 08:48)


Ubuntu 16.04 64 bits (depuis juillet 2016)
divers versions Ubuntu et Studio 14.04 LTS 64 bits
(HS décembre 2016 ) Intel(R) Core(TM)2 Duo CPU     E7400  @ 2.80GHz 2Go de RAM
(Janvier 2017 ) : Intel(R) Pentium(R) Dual  CPU  E2180  @ 2.00GHz 2Go de RAM 800 MHz

Hors ligne

#2 Le 18/03/2017, à 10:49

erresse

Re : [Résolu] coller un texte dans une sélection

Salut,
Une fois le texte sélectionné récupéré par xsel, tu le supprimes du texte original, puis tu fais tes modifications (via script, je suppose) et enfin tu sélectionnes/copie le texte modifié, et tu le colles au point courant dans le texte d'origine en utilisant xclip...

Dernière modification par erresse (Le 18/03/2017, à 10:50)


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#3 Le 18/03/2017, à 12:03

erresse

Re : [Résolu] coller un texte dans une sélection

gigiair a écrit :

Le X206 HA est-il différent du X206 TA ?
J'ai ce dernier modèle sur lequel j'ai installé Debian et qui me donne toutes satisfaction. Le son n'est pour l'instant disponible qu'en téléchargeant un noyau directement.
https://wiki.debian.org/InstallingDebianOn/Asus/X205TA

Et qu'est-ce que ça vient faire dans le sujet de ar barzh paour ???
roll


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#4 Le 18/03/2017, à 12:06

Watael

Re : [Résolu] coller un texte dans une sélection

salut,

les questions à propos de Gedit n'ont pas leur place sur le forum "Terminal, scripts et ligne de commande".

donc, je te suggère de mieux expliquer (avec un exemple) ce que tu fais, et veux obtenir.

dans le terminal, on utilisera vim, et, sur la ligne de commande ou dans un script, sed (ou ed pour les plus velus).


eval, c'est mal.

Hors ligne

#5 Le 18/03/2017, à 14:37

ar barzh paour

Re : [Résolu] coller un texte dans une sélection

@ watael
bon je supprime gedit dans mon premier post
comment être plus général ?

dans n'importe quelle application , on sélectionne une portion de texte (ça pourrait être dans le terminal pourquoi pas lors de la saisie d'une commande)

ensuite je clique sur ma touche "Favorites" et miracle le texte sélectionné a été transformé !!!!

comment ? :
j'ai assigné un script à ma touche "favorites" qui effectue ce travail

ce que je ne sais pas faire , c'est la commande qui dans le script saurait faire ce travail ,
d'où le post dans terminal SCRIPTS et ligne de commande

mais peut-être eresse m'a-t-il donné une piste : utiliser xclip ,
je voulais chercher avec le man de xclip , mais il n'existe pas sur ma machine

le début du code qui sera assigné à la touche "Favorites" est le suivant , je ne suis pas allé loin !!

#!/bash
texte1="$(xsel -o)"
texte2=$(commande1) # transformant_le_texte1 ça c'est mon affaire
commande2 # remplaçant la sélection (qui a été faite avant l'appel au script) par $texte2  

@eresse : des précisions sur xclip ? , je vais chercher

j'ai oublié de préciser que je ne travaille qu' en bash ....

il faut aussi que je relise le man de xsel , peut-être que xsel saurait faire



enfin j'espère avoir eté plus clair ....

Dernière modification par ar barzh paour (Le 18/03/2017, à 15:04)


Ubuntu 16.04 64 bits (depuis juillet 2016)
divers versions Ubuntu et Studio 14.04 LTS 64 bits
(HS décembre 2016 ) Intel(R) Core(TM)2 Duo CPU     E7400  @ 2.80GHz 2Go de RAM
(Janvier 2017 ) : Intel(R) Pentium(R) Dual  CPU  E2180  @ 2.00GHz 2Go de RAM 800 MHz

Hors ligne

#6 Le 18/03/2017, à 15:05

Watael

Re : [Résolu] coller un texte dans une sélection

un simple echo ne suffit pas ?

qu'as-tu déjà essayé ? pour nous éviter de proposer ce que tu as constaté ne pas fonctionner.

ou

#!/bin/bash

selection=$(xsel -o)
xsel -i < <(transformation "$selection")
xsel -o

?

Dernière modification par Watael (Le 18/03/2017, à 15:06)


eval, c'est mal.

Hors ligne

#7 Le 18/03/2017, à 18:01

ar barzh paour

Re : [Résolu] coller un texte dans une sélection

je ne sais pas ce que fait ce scrit
voilà ce que j'ai fait d'après ce que j'ai compris
bien sur cut n'est là que pour illustré l'exemple !!!!

#!/bin/bash
texte1="$(xsel -o)"
texte2=$(cut -c1-4 <<<"$texte1") # ne retenir que les 4 premiers caractères
xsel -i <<< "$texte2"            # met texte2 dans la selection ?
xsel -o				 # écrit dans la sélection ?

soit le texte suivant
un garscon et une fille

je sélectionne garscon , j'appuie sur ma touche "favorites" auquel j'ai associé ce script ,
il n'y a plus de sélection , le texte n'est pas modifié
et j'ai toujours
un garscon et une fille
alors que j'aurai voulu avoir
un gars et une fille

Dernière modification par ar barzh paour (Le 18/03/2017, à 18:08)


Ubuntu 16.04 64 bits (depuis juillet 2016)
divers versions Ubuntu et Studio 14.04 LTS 64 bits
(HS décembre 2016 ) Intel(R) Core(TM)2 Duo CPU     E7400  @ 2.80GHz 2Go de RAM
(Janvier 2017 ) : Intel(R) Pentium(R) Dual  CPU  E2180  @ 2.00GHz 2Go de RAM 800 MHz

Hors ligne

#8 Le 18/03/2017, à 18:03

Arbiel

Re : [Résolu] coller un texte dans une sélection

Bonsoir

Si j'ai bien compris, tu cherches à remplacer le texte sélectionné par le résultat de ton script. La fonction ci-dessous que je viens de tester

function ct { xclip -o 2>/dev/null | base64 | xclip -i 2>/dev/null ;  xdotool click 2 ; } ;

renvoie la transformation du texte sélectionné en base 64 sur la console. Je suppose qu'en la liant à une touche de fonction, le texte viendra remplacer le texte initial.

Bien sûr, tu remplaces base64 par ton script.

Arbiel


Arbiel Perlacremaz
Dell Vostro 3550 Ubuntu 14.04 64 bits (je ne suis pas passé à la 16,04 à cause d'un problème majeur avec crypttab, et de sa déconcertante lenteur)

Hors ligne

#9 Le 18/03/2017, à 18:09

Arbiel

Re : [Résolu] coller un texte dans une sélection

Je viens de voir ton précédent message. Si xsel fonctionne comme xclip, ta dernière commande envoie sur la sortie standard le texte sélectionné, ignorant le résultat de tes commandes précédentes.


Arbiel Perlacremaz
Dell Vostro 3550 Ubuntu 14.04 64 bits (je ne suis pas passé à la 16,04 à cause d'un problème majeur avec crypttab, et de sa déconcertante lenteur)

Hors ligne

#10 Le 18/03/2017, à 18:21

ar barzh paour

Re : [Résolu] coller un texte dans une sélection

Arbiel a écrit :

tu cherches à remplacer le texte sélectionné par le résultat de ton script

oui
pour faire l'essai il va falloir que j'installe xclip

xclip -o
Le programme « xclip » n'est pas encore installé. Vous pouvez l'installer en tapant :
sudo apt install xclip

idem pour xdotool

Dernière modification par ar barzh paour (Le 18/03/2017, à 18:25)


Ubuntu 16.04 64 bits (depuis juillet 2016)
divers versions Ubuntu et Studio 14.04 LTS 64 bits
(HS décembre 2016 ) Intel(R) Core(TM)2 Duo CPU     E7400  @ 2.80GHz 2Go de RAM
(Janvier 2017 ) : Intel(R) Pentium(R) Dual  CPU  E2180  @ 2.00GHz 2Go de RAM 800 MHz

Hors ligne

#11 Le 18/03/2017, à 18:34

ar barzh paour

Re : [Résolu] coller un texte dans une sélection

on approche de la solution
mon script

#!/bin/bash
texte1="$(xsel -o)"
texte2=$(cut -c1-4 <<<"$texte1") # ne retenir que les 4 premiers caractères
echo "$texte2" | xclip -i            # met texte2 dans la selection ?
xdotool click 2

le texte comme ci dessus

un garscon et une fille

je sélectionne garscon
et j'appuie sur ma touche de fonction
j'obtiens

un gars
garscon et une fille

j'ai bien obtenu gars mais un saut de ligne a été ajouté et garscon n'a pas été supprimé


Ubuntu 16.04 64 bits (depuis juillet 2016)
divers versions Ubuntu et Studio 14.04 LTS 64 bits
(HS décembre 2016 ) Intel(R) Core(TM)2 Duo CPU     E7400  @ 2.80GHz 2Go de RAM
(Janvier 2017 ) : Intel(R) Pentium(R) Dual  CPU  E2180  @ 2.00GHz 2Go de RAM 800 MHz

Hors ligne

#12 Le 18/03/2017, à 18:38

ar barzh paour

Re : [Résolu] coller un texte dans une sélection

le résultat surprend
pour un autre essai que j'ai fait , les 4 caractères du mot sélectionné sont ajoutés à la fin de la phrase


Ubuntu 16.04 64 bits (depuis juillet 2016)
divers versions Ubuntu et Studio 14.04 LTS 64 bits
(HS décembre 2016 ) Intel(R) Core(TM)2 Duo CPU     E7400  @ 2.80GHz 2Go de RAM
(Janvier 2017 ) : Intel(R) Pentium(R) Dual  CPU  E2180  @ 2.00GHz 2Go de RAM 800 MHz

Hors ligne

#13 Le 18/03/2017, à 18:47

Watael

Re : [Résolu] coller un texte dans une sélection

utilise printf, ou echo -n à la place de echo; ce dernier ajoute un retour à la ligne par défaut.


eval, c'est mal.

Hors ligne

#14 Le 18/03/2017, à 18:58

ar barzh paour

Re : [Résolu] coller un texte dans une sélection

il faudrait vider le "buffer" avant de copier , supprimer le saut de ligne ( du à xdotool ?)
remarque
dans mon script  j' avais mis

texte1="$(xsel -o)"

le résultat est le même avec

texte1=$(xclip -o)"

Dernière modification par ar barzh paour (Le 18/03/2017, à 19:01)


Ubuntu 16.04 64 bits (depuis juillet 2016)
divers versions Ubuntu et Studio 14.04 LTS 64 bits
(HS décembre 2016 ) Intel(R) Core(TM)2 Duo CPU     E7400  @ 2.80GHz 2Go de RAM
(Janvier 2017 ) : Intel(R) Pentium(R) Dual  CPU  E2180  @ 2.00GHz 2Go de RAM 800 MHz

Hors ligne

#15 Le 18/03/2017, à 19:18

Watael

Re : [Résolu] coller un texte dans une sélection

xsel -i < <(cut -z -c1-4 < <(xsel -d -o))
xdotool click 2

j'ai ajouté l'option -d comprenant, sans doute à tort, que ça effacerait la sélection, mais non? sad
et une option -z pour terminer par un caractère NULL plutôt qu'un retour à la ligne.

donc, ça insère la transformation soit où on fait le premier clic pour sélectionner le mot, soit à la fin de la ligne.
???

Dernière modification par Watael (Le 18/03/2017, à 19:19)


eval, c'est mal.

Hors ligne

#16 Le 18/03/2017, à 20:31

Watael

Re : [Résolu] coller un texte dans une sélection

il semblerait que l'option -d ne fonctionne que dans les applications X, ce que ne serait pas Gedit.

ça fonctionne dans xedit.


eval, c'est mal.

Hors ligne

#17 Le 19/03/2017, à 00:43

Arbiel

Re : [Résolu] coller un texte dans une sélection

Bonsoir

xdotool click 2

correspond au clic intrermédiaire, qui colle le contenu du presse-papier à l'endroit de la souris, et semble ajouter un passage à la ligne.
Pour coller dans la sélection, il faut faire l'équivalent d'un Ctrl-V, mais je n'ai pas encore trouvé comment le coder.

Arbiel


Arbiel Perlacremaz
Dell Vostro 3550 Ubuntu 14.04 64 bits (je ne suis pas passé à la 16,04 à cause d'un problème majeur avec crypttab, et de sa déconcertante lenteur)

Hors ligne

#18 Le 19/03/2017, à 06:51

ar barzh paour

Re : [Résolu] coller un texte dans une sélection

smile je pense avoir trouvé , cela ne me parait pas mal !!!!!

#!/bin/bash
xdotool key ctrl+x                 # =~ Ctrl X (texte dans clipboard)
texteb="$(xsel -b -o)"             # récupération du texte
texte=$(cut -z -c1-4 <<<"$texteb") # transformation du texte
echo -n "$texte" | xsel -i -b      # mettre texte dans clipboard 
xdotool key ctrl+v                 # =~ Ctrl V (du clipboard)
exit 0

je pense qu'on peut s'en tirer uniquement avec xsel ,
mais en jonglant avec les primary-secondary-clipboard ?
EDIT je viens de m'apercevoir que en final je n'ai pas utilisé xclip!

merci à tous
vos réponses m'ont permis de solutionner !!!!!!
une fois résolu ça parait assez simple
mais encore fallait-il connaître xdotool qui permet d'effectuer un Ctrl X Ctrl V
ainsi que le fonctionnement de Ctrl X Ctrl V
@ Watael : effectivement je ne sais pas si ça fonctionnera dans toutes les applications
maintenant il faut que je vois si la transformation réelle que je veux effectuer fonctionne , mais c'est un autre problème

Dernière modification par ar barzh paour (Le 20/03/2017, à 06:29)


Ubuntu 16.04 64 bits (depuis juillet 2016)
divers versions Ubuntu et Studio 14.04 LTS 64 bits
(HS décembre 2016 ) Intel(R) Core(TM)2 Duo CPU     E7400  @ 2.80GHz 2Go de RAM
(Janvier 2017 ) : Intel(R) Pentium(R) Dual  CPU  E2180  @ 2.00GHz 2Go de RAM 800 MHz

Hors ligne

#19 Le 19/03/2017, à 07:59

ar barzh paour

Re : [Résolu] coller un texte dans une sélection

@Watael

xsel -i < <(cut -z -c1-4 < <(xsel -d -o))

en dehors de la signification de xsel et de cut
tu peux me donner la signification de cette syntaxe ?
comment utilise-t-on  < <(....)

j'ai trouvé

 
commande <<etiquette
.....
....
etiquette

mais je ne fais pas le rapport

je connais aussi

 
commande < fichier

mais  <(commande)   ??  signifie quelque chose


Ubuntu 16.04 64 bits (depuis juillet 2016)
divers versions Ubuntu et Studio 14.04 LTS 64 bits
(HS décembre 2016 ) Intel(R) Core(TM)2 Duo CPU     E7400  @ 2.80GHz 2Go de RAM
(Janvier 2017 ) : Intel(R) Pentium(R) Dual  CPU  E2180  @ 2.00GHz 2Go de RAM 800 MHz

Hors ligne

#20 Le 19/03/2017, à 12:09

Watael

Re : [Résolu] coller un texte dans une sélection

Arbiel a écrit :

Pour coller dans la sélection, il faut faire l'équivalent d'un Ctrl-V, mais je n'ai pas encore trouvé comment le coder.

mais bien sûr ! +1

ar barzh paour a écrit :

mais  <(commande)   ??  signifie quelque chose

non, c'est une lubie, et j'aime envoyer les gens dans le mur.
sad
c'est une Substitution de commande.
ça évite les problèmes liés au sous-shell créé par une conduite :

$ sed 's/^/une /' <<< "chaîne quelconque" | read variable
$ echo "${variable:-do not exist}"
do not exist
$ read variable < <(sed 's/^une/une autre/' <<< "une chaîne quelconque")
$ echo "${variable:-do not exist}"
une autre chaîne quelconque
$

Dernière modification par Watael (Le 19/03/2017, à 12:11)


eval, c'est mal.

Hors ligne

#21 Le 19/03/2017, à 15:29

erresse

Re : [Résolu] coller un texte dans une sélection

ar barzh, dans ton message #19 tu dis avoir trouvé la solution, pourtant chez moi je ne parviens pas à la faire fonctionner...
Apparemment, les commandes émises par "xdotool key ..." pour copier/coller ne déclenchent pas les actions : je vois simplement qu'elles s'exécutent parce-que la sélection clignote brièvement, mais le remplacement ne se fait pas.
Or, je sais que le contenu des sélections (xsel primaire et clipboard) sont corectes puisque si je saisis la combinaison "ctrl+v" directement sur mon clavier, le remplacement s'effectue impeccablement...
En revanche, pour ce qui est de "jongler avec les primary-secondary-clipboard", je peux te dire que ça :

#!/usr/bin/env bash
#xdotool key ctrl+x
xsel -i -b < <(cut -z -c1-4 < <(xsel -o))
xdotool key ctrl+v
exit 0

ça fonctionne (pas le xdotool, mais l'instruction précédente) :
xsel -i -b (pour charger la sélection clipboard) avec  le texte modifié (par le cut) récupéré dans la sélection primaire (xsel -o).
On n'utilise aucune variable transitoire pour travailler sur le texte (dans le contexte de ce test, évidemment).


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#22 Le 20/03/2017, à 06:40

ar barzh paour

Re : [Résolu] coller un texte dans une sélection

@ eresse
le code que j'utilise est celui du post 19
sauf l'entête mais je ne sais pas ce que cela implique
j'y ai mis #!/usr/bin/env bash ai lieu de #!/bin/bash .. les deux ont l'air de fonctionner

je mis ce code dans /usr/local/bin ,je l'ai appelé "transforme" ,rendu exécutable et mis dans une touche de raccourci

ls -ails /usr/local/bin/trans*
269341 8 -rwxrwxr-x 1 root root 5842 mars  19 07:18 /usr/local/bin/transforme

il fonctionne dans mon éditeur mais dans le terminal si je clique sur la touche de raccourci auquel j'ai associé ce bash
j'obtiens un sempiternel

GNU bash, version 4.3.46(1)-release (x86_64-pc-linux-gnu)

un bash que j'ai utilisé pour effectuer des essais
il garde la trace des 3 buffers dans le fichier tmp_trans.txt et permet donc de regarder ce qui se passe

#!/usr/bin/env bash

function recup_buffer {
textep="$(xsel -p -o)" 
textes="$(xsel -s -o)" 
texteb="$(xsel -b -o)" 
}

function affiche_buffer {
echo "# xselp=$textep" >>tmp_trans.txt
echo "# xsels=$textes" >>tmp_trans.txt
echo "# xselb=$texteb" >>tmp_trans.txt
echo "#"               >>tmp_trans.txt
}
function affiche {
recup_buffer
affiche_buffer
}

xdotool key ctrl+x                 # =~ Ctrl X (texte dans clipboard)
texteb="$(xsel -b -o)"             # récupération du texte
# texte=$(pyttradV2  "$texteb")       # transformation du texte
texte=$(cut -z -c1-4 <<<"$texteb") # transformation du texte

echo $texte >> tmp_trans.txt    
affiche

echo -n "$texte" | xsel -i -b       # mettre texte dans clipboard 
xdotool key ctrl+v                  # =~ Ctrl V (du clipboard)
exit 0

Dernière modification par ar barzh paour (Le 20/03/2017, à 09:03)


Ubuntu 16.04 64 bits (depuis juillet 2016)
divers versions Ubuntu et Studio 14.04 LTS 64 bits
(HS décembre 2016 ) Intel(R) Core(TM)2 Duo CPU     E7400  @ 2.80GHz 2Go de RAM
(Janvier 2017 ) : Intel(R) Pentium(R) Dual  CPU  E2180  @ 2.00GHz 2Go de RAM 800 MHz

Hors ligne

#23 Le 20/03/2017, à 09:01

Hizoka

Re : [Résolu] coller un texte dans une sélection

Salut, dans mon terminal kde,
je ne peux pas couper, et pour coller c'est ctrl + alt + v
c'est peu etre de là que viens ton problème non ?

Hors ligne

#24 Le 20/03/2017, à 10:00

Watael

Re : [Résolu] coller un texte dans une sélection

Ctrl-x Ctrl-v, pour bash, est un raccourci pour afficher la version de bash.


eval, c'est mal.

Hors ligne

#25 Le 20/03/2017, à 11:32

Arbiel

Re : [Résolu] coller un texte dans une sélection

Bonjour

C'est à l'application qui gère la fenêtre active qu'est envoyée la simulation de l'appui sur les touches, et ce n'est pas toujours "Ctrl+v", même si cette combinaison de touches est devenue une norme de fait. Un logiciel peut y déroger, pour quelque raison que ce soit. Sous Ubuntu, coller le contenu du presse-papier dans un terminal se fait par "Ctrl+Maj+v".

Tout dépend donc du contexte dans lequel la commande "xdotool" est exécutée.

Arbiel


Arbiel Perlacremaz
Dell Vostro 3550 Ubuntu 14.04 64 bits (je ne suis pas passé à la 16,04 à cause d'un problème majeur avec crypttab, et de sa déconcertante lenteur)

Hors ligne