I have 7 lines of text:
a
b
c
d
e
f
g
Now I want to add characters to the end of each line, to end up with:
a,
b,
c,
d,
e,
f,
g,
I found that I can use the "sed" command and run my selection through sed using "Filter through command" in Textmate
sed 's/$/,/'
Now, one question remains: how do I turn this into a Textmate command that takes input in some sort of way (so it knows what text to append)?
(My tries in doing this have proven unsuccessful)
Pop this into a command within the Text bundle, it'll append whatever is in the clipboard to the end of all lines that have been selected:
#!/bin/bash
if [[ $(pbpaste|wc -l) -eq 0 ]]
then r=`pbpaste`
sed 's/$/'$r'/'
else sed 's/$/,/'
fi
It's currently limited to appending one line's worth of text, if the clipboard contains more than one line it will default to a comma at the end of the selected lines.
Edit:
To take this a little further, here's a version that provides a dialog box which prompts for the input of the string that will be appended to each line in the selection:
#!/bin/bash
r=$(CocoaDialog inputbox --title "String to be appended to EOL" \
--informative-text "Enter string:" \
--button1 "Okay" --button2 "Cancel")
[[ $(head -n1 <<<"$r") == "2" ]] && exit_discard
r=$(tail -n1 <<<"$r")
sed "s/$/$r/"
In Text menu there is already a command "Edit each line in selection" exactly do this. It will put cursor on first line and what you type there repeated on each line.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With