2016-11-20 96 views

回答

3

您需要输入一个实际的TAB字符:

var=${var///} 
     ^that's really meant to be a TAB character 
      but might not be visible on this site 

在命令行中, 插入TAB字符, 按控制vTAB

0

\ t不会在bash正则表达式中使用TAB。

${var//$(echo -e "\t")/ } 
+2

'回声-e'可能会或可能不会做你想做的。某些实现可能会将“-e”作为其输出的一部分进行打印。 'printf'\ t''更便携。 –

+1

不只是一些实现,甚至在某些模式下(即,如果设置了'xpg_echo'和'posix'运行时标志)bash。如果你*想要命令替换,'printf'\ t''会更可靠。 –

+1

(另外,这不是“bash正则表达式” - 它是fnmatch/glob表达式)。 –

2

因为在PuTTY中输入一个实际的制表符到bash shell中并不那么简单。 CTRLVTAB不能工作,因为CTRLV在窗口中被捕获为粘贴。

相反,我用:

${var//$'\t'/ } 

例子:

$ var="te"$'\t'"st" 

$ echo $var 
te st 

$ echo ${var//$'\t'/i} 
teist 
+2

可能会显示'echo“$ var”'(实际上是发出选项卡)vs'echo $ var'(字符串分割,因此将每个边作为单独的参数传递给'echo“,因此只用空格分隔)。同样,'echo'$ {var // $'\ t'/ i}“'可能不会修正任何与'var'和一个理智的IFS的当前/已知值有关的东西,但是对于人们来说,在别处使用。 –