我有7行文字:

a
b
c
d
e
f
g

现在我想在每行末尾添加字符,最终得到:

a,
b,
c,
d,
e,
f,
g,

我发现我可以使用“sed”命令并使用 Textmate 中的“Filter through command”通过 sed 运行我的选择

sed 's/$/,/'

现在,还有一个问题:如何将其转换为以某种方式接受输入的 Textmate 命令(以便它知道要附加什么文本)?

(我的尝试被证明是不成功的)

有帮助吗?

解决方案

将其弹出到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/"

其他提示

文字菜单中,已有一个命令“ 编辑选择中的每一行 ”正是这样做的。它会将光标放在第一行,并在每行重复输入的内容。

在捆绑编辑器中创建一个新命令

#!/bin/bash
sed 's/$/,/'

在输入下拉列表中选择所选文字无任何
在输出中选择替换现有文本

我刚刚测试过,它运行正常。点击 您还可以选择键盘快捷键以提高效率。

如果您愿意避免使用命令路径并仅使用“查找/替换”对话框,只需执行以下操作:

  • 突出显示/选择您要附加到的行
  • 打开查找对话框
  • 检查“正则表达式”
  • 在“查找”字段中添加 '$' (表示行尾)
  • 在“替换”字段中,添加 ',' (你想要附加的内容)
  • 抓住 Option, ,这会将“全部替换”更改为“选择中”

该技术可以以许多其他有用的方式应用。例如,改变 '$''^' 如果你想给每一行添加前缀。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top