Here’s a pattern I find pretty useful:
pbpaste | some_command | pbcopy
For example:
Converting spaces to tabs, for pasting into a spreadsheet program:
pbpaste | tr ' ' '\t' | pbcopy
Converting tabs and newlines to html table formatting:
pbpaste | sed 's/^/<tr><td>/' | sed 's/\t/<td>/g' | pbcopy
Escape angle brackets and ampersands for html:
pbpaste | sed 's/&/\&/g; s/</\</g; s/>/\>/g;' | pbcopy
(I used this on itself before pasting into this post.)Convert newlines-indicate-paragraphs text to html:
pbpaste | sed 's/^/<p>/' | pbcopy
(I use this in putting together the kids text posts.)Any time I want to do find-and-replace when working with software that doesn’t support it well.
The way this works is that pbpaste
reads from the
clipboard as plain text, the intermediate command(s) transform the
text, and the pbcopy
sends it back to the clipboard.
While these are the Mac commands it should be similar elsewhere. For
example, on Linux I’d use xsel, though that does
require paying attention to whether you want PRIMARY
(xsel
) or CLIPBOARD (xsel -b
).
One can also use Vim to edit clipboard text. I’ve experimented with a few ways. Here’s a published example of how it could be done (from someone else). Adding a keyboard shortcut makes it faster when you’re not already in a terminal. You can edit (e.g.) web text boxes with Vim this way, although active JavaScript doesn’t always react to a paste the same way as typing. Depends on the page.