2016-11-20 80 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的當前/已知值有關的東西,但是對於人們來說,在別處使用。 –