J'utilise sed
depuis 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 printf
sortie vers xclip
afin qu'elle soit copiée dans le presse-papiers. Maintenant, printf
contrairement à echo
n'insère pas une nouvelle ligne à la fin par défaut. Donc, si je colle ce contenu dans le terminal, la ls
commande 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 | xclip
cas. Cette réponse supprime uniquement la dernière nouvelle ligne.