如何在命令行中输入tab char?

时间:2011-06-17 21:56:16

标签: macos bash

在交互式bash终端中,如何输入制表符?例如,如果我想使用sed将“_”替换为我想使用的标签:

echo $string | sed 's/[_]/TAB/g'

其中TAB表示Tab键。这不是交互式的shell脚本,当我按Tab键时,我没有任何字符和铮铮声。我也试过\t,但它只将t放在字符串而不是标签中。

注意这是mac osx。

2 个答案:

答案 0 :(得分:45)

Control + V 之前,然后是 Tab 来抑制通常的扩展行为。

答案 1 :(得分:0)

由于此问题被标记为“ bash”,因此使用Bash shell的"ANSI-C quoting" feature可能更可取。它扩展了ANSI C样式的转义序列,例如\t\n,并以单引号字符串返回结果。

echo $string | sed $'s/_/\t/g'

这不依赖于您的终端了解 Control + V (按字面意思插入下一个字符)键绑定,有些可能不知道。另外,由于所有“不可见”字符都可以用字面表示,因此您的解决方案可以复制粘贴而不会丢失信息,并且如果在脚本中使用此sed调用,它将更加明显/更耐用。别人可能最终会阅读。

还要注意,macOS的sed版本是BSD版本。 GNU sed可以很好地替换替换模式中的\t这样的字符转义,并且您甚至不需要上述解决方法。

您可以安装带有MacPorts的GNU sed,并且应该以{{1​​}}的形式提供,但是Homebrew可能会取代系统的gsed,具体取决于您的{安排了{1}}个变量。