UNIX 文字工具: 跳格換空格

在螢幕上經常看不出來跳格或空格的不同,因此可能造成一些麻煩。 或者,在某些介面程式內 (例如 T-C shell),因為跳格被當做保留字元, 因此使用上有可能不方便。 為了這些理由,我們有時候希望將跳格換成若干個空格。 為了保持視覺效果,一個跳格最多可以換成八個空格。 說明起來很費事,讀者只要自己做幾個實驗,就明白了。

expand 指令將跳格換成若干個空格,使得印在螢幕上的外觀不變。 unexpand 理論上是 expand 的相反,就是把空格換回去跳格。 實際上 unexpand 有相當的困難,只能說是「盡量」把空格換成跳格。 它們的基本使用法都是

(un)expand FILE
而且都接受 stdin 輸入。

譬如前面說在 T-C shell 內不能用跳格的那個問題, 可以進入 Bourne shell 工作,也可以利用 expand 來幫忙。 我們知道 cat -n 在列號後面用了一個跳格,而這個跳格相當於兩個空格的寬度, 所以 expand 會將它換成兩個空格。 因此我們可以在 T-C shell 裡面說

cat -n forty.txt | expand | grep '^     7  ' | sed 's/^     7  //' | unexpand
注意,此時 7 的前面有 5 個空格,後面是 2 個空格。 上述流程最後的 | unexpand, 是擔心 forty.txt 的檔案原文中有跳格,因此用來將空格還原成跳格。

跳格有許多妙用。所以,沒必要的時候,最好還是將它們留著,不要換成空格。

習題

[ 前一節 ]‧[ 後一節 ]‧[ 回目錄 ]



注意:此處所有文件均為原著,個別的版權宣告日後會一一公布, 整體版面設計亦尚未完成。但仍請勿抄襲文字與圖片,以免觸犯著作權法。

Created: Nov 20, 2000
Last Revised: Nov 20, 2000
© Copyright 2000 Wei-Chang Shann 單維彰

shann@math.ncu.edu.tw