107 votes

Le moyen le plus simple de supprimer le caractère de nouvelle ligne d'une chaîne d'entrée dans le tableau de montage

J'espère que c'est assez simple, pour expliquer le cas d'utilisation lorsque j'exécute la commande suivante (OS X 10.6) :

$ pwd | pbcopy

le tableau de collage contient un caractère de nouvelle ligne à la fin. J'aimerais m'en débarrasser.

1 votes

Remarque : si la raison pour laquelle vous voulez faire cela est de coller dans le champ "Aller à" dans le Finder (tapez ~ ), vous pouvez simplement utiliser pwd | pbcopy coller dans le champ de texte, puis appuyer sur la touche d'effacement.

150voto

grep Points 2963

pwd | tr -d '\n' | pbcopy

24 votes

Cela permet également de créer un joli alias, alias copy="tr -d '\n' | pbcopy" .

11 votes

Cela ne supprimerait-il pas toutes les nouvelles lignes ? Et si je ne veux supprimer que la dernière ligne ?

3 votes

@davidmh - Oui, ça les dépouille tous. Je supprime toujours le dernier caractère, ce qui fonctionne bien pour moi : head -c -1 . taylor.woodstitch.com/linux/

46voto

Dennis Williamson Points 105818
printf $(pwd) | pbcopy

o

echo -n $(pwd) | pbcopy

Notez qu'il faut vraiment les citer au cas où le nom du répertoire contiendrait des caractères d'espacement. Par exemple :

echo -n "$(pwd)" | pbcopy

2 votes

Le premier n'est pas sûr : il pourrait y avoir des % dans la chaîne.

5 votes

Tu peux le rendre sûr comme ça : printf '%s' $(pwd) | pbcopy

3 votes

Le deuxième commandement est très précieux. Il est bon de connaître l'option "echo without newline" : echo -n "text " o "text \c"

12voto

Sidnicious Points 15187

J'ai écrit un utilitaire appelé noeol pour résoudre ce problème. Il achemine stdin vers stdout, mais laisse de côté la nouvelle ligne de fin s'il y en a une. Par exemple

pwd | noeol | pbcopy

j'ai aliasé copy a noeol | pbcopy .

Découvrez-le ici : https://github.com/Sidnicious/noeol

3voto

slm Points 3435

Pour moi, j'avais des problèmes avec le tr -d '\n' approche. Sur OSX, il se trouve que le paquet coreutils est installé par l'intermédiaire de brew install coreutils . Cela fournit tous les utilitaires GNU "normaux", préfixés par le préfixe g devant leurs noms typiques. Ainsi, head serait ghead par exemple.

L'utilisation de cette méthode est plus sûre, selon moi :

pwd | ghead -c -1 | pbcopy

Vous pouvez utiliser od pour voir ce qui se passe avec la sortie :

$ pwd | ghead -c -1 | /usr/bin/od -h
0000000      552f    6573    7372    732f    696d    676e    6c6f    6c65
0000020      696c
0000022

vs.

$ pwd | /usr/bin/od -h
0000000      552f    6573    7372    732f    696d    676e    6c6f    6c65
0000020      696c    000a
0000023

La différence ?

El 00 y 0a sont les hexcodes pour un nul et une nouvelle ligne. Le site ghead -c -1 se contente de "mâcher" le dernier caractère de la sortie avant de la transmettre à | pbcopy .

$ man ascii | grep -E '\b00\b|\b0a\b'
     00 nul   01 soh   02 stx   03 etx   04 eot   05 enq   06 ack   07 bel
     08 bs    09 ht    0a nl    0b vt    0c np    0d cr    0e so    0f si

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X