在终端中查看命令行表达式的实时结果吗?

时间:2018-10-30 16:48:29

标签: linux bash sed command-line

我经常发现自己正在编写一个很长的bash或zsh命令,而该命令本身还不够长,无法成为脚本。例如,当我调试sed表达式时,经常更改一个字符并重新运行命令以查看输出如何变化:

$ echo "123 eyes on me" | sed -E 's/[[:alnum:]*]//'
23 eyes on me
$ echo "123 eyes on me" | sed -E 's/[[:alnum:]]*//'
 eyes on me
$ echo "123 eyes on me" | sed -E 's/[[:alnum:] ]*//'

$ echo "123 eyes on me" | sed -E 's/[[:digit:] ]*//'
eyes on me

即使知道vi-mode并精通终端,每次编辑前一个命令并重新运行它也很麻烦。我宁愿只是就地编辑参数,并实时查看其效果。

有些网站针对特定用例提供了此类工具,例如,使用正则表达式匹配:

enter image description here

其他示例包括JSON linters,计算器或YAML解析器。但是,这些都存在多个问题:

  • 它们不是通用的,也不便于整体开发命令,如果我想将正则表达式输出传递给tr,然后再用awk选择第三列怎么办?
  • 行为可能与我在终端中的命令不同
  • 它在在线浏览器中运行,而不是在我的终端中运行
  • 非开源

有什么方法可以在终端中实时开发命令行表达式,并在输入时看到输出?

1 个答案:

答案 0 :(得分:0)

我通常只是将代码放入sed.sh

echo "testing 123" | sed 's/123/456/'

然后在终端中观看此文件的执行情况:

watch -n1 './sed.sh'