J'utilise seddepuis un certain temps, mais voici une bizarrerie que j'ai trouvée , que je ne suis pas en mesure de résoudre.
Permettez-moi d'expliquer mon problème avec le cas réel.
Scène 1
printf "ls" | xclip -selection clipboard
echo "ls" | xclip -selection clipboard
Dans la première commande, je dirige la printfsortie vers xclipafin qu'elle soit copiée dans le presse-papiers. Maintenant, printfcontrairement à echon'insère pas une nouvelle ligne à la fin par défaut. Donc, si je colle ce contenu dans le terminal, la lscommande copiée ne s'exécute pas automatiquement.
Dans le second, il y a une nouvelle ligne à la fin, donc coller le contenu du presse-papiers entraîne également l'exécution de la commande dans le presse-papiers.
C'est indésirable pour moi. Donc, je voulais supprimer la nouvelle ligne en utilisant sed, mais cela a échoué, comme expliqué dans la scène ci-dessous.
Scène # 2
echo "ls" | sed -r 's/\n//g' | xclip -selection clipboard
Le contenu du presse-papiers contient toujours une nouvelle ligne. Lorsque je le colle dans le terminal, la commande s'exécute automatiquement.
J'ai également essayé de supprimer le caractère de retour chariot \r. Mais nada. Il semble que je manque quelque chose de très crucial / fondamental ici.
generate-text | xclipcas. Cette réponse supprime uniquement la dernière nouvelle ligne.