我有7行文字:
a
b
c
d
e
f
g
现在我想在每行的末尾添加字符,最后得到:
a,
b,
c,
d,
e,
f,
g,
我发现我可以使用“sed”命令并使用Textmate中的“通过命令过滤”在sed中运行我的选择
sed 's/$/,/'
现在,还有一个问题:如何将其转换为以某种方式接收输入的Textmate命令(因此它知道要追加的文本)?
(我尝试这样做已被证明是不成功的)
答案 0 :(得分:3)
将其弹出到Text包中的命令中,它会将剪贴板中的任何内容附加到已选择的所有行的末尾:
#!/bin/bash
if [[ $(pbpaste|wc -l) -eq 0 ]]
then r=`pbpaste`
sed 's/$/'$r'/'
else sed 's/$/,/'
fi
目前仅限于附加一行的文本,如果剪贴板包含多行,则默认为所选行末尾的逗号。
修改强>
为了更进一步,这是一个版本,它提供了一个对话框,提示输入将附加到选择中每一行的字符串:
#!/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/"
答案 1 :(得分:2)
在文字菜单中,已经有一个命令“ 编辑选择中的每一行 ”完全执行此操作。它会将光标放在第一行,并在每行重复输入的内容。
答案 2 :(得分:2)
在捆绑编辑器中创建一个新命令
#!/bin/bash
sed 's/$/,/'
在输入下拉列表中选择所选文字或无任何
在输出中选择替换现有文本
我刚刚测试过,它运行正常。
您还可以选择键盘快捷键以提高效率。
答案 3 :(得分:2)
如果您愿意避开命令路径并只需使用“查找/替换”对话框,请执行以下操作:
'$'
(表示该行的结尾)','
(您想要追加的内容)Option
,这会将“全部替换”更改为“在选择中”该技术可以以许多其他有用的方式应用。例如,如果您想为每一行添加前缀,请将'$'
更改为'^'
。