在交互式bash终端中,如何输入制表符?例如,如果我想使用sed将“_”替换为我想使用的标签:
echo $string | sed 's/[_]/TAB/g'
其中TAB表示Tab键。这不是交互式的shell脚本,当我按Tab键时,我没有任何字符和铮铮声。我也试过\t
,但它只将t放在字符串而不是标签中。
注意这是mac osx。
答案 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}}个变量。