我試圖使用tcsh中column -t -s $'\t'
(這在bash的作品),但我不能找到一種方法,使tcsh中相當於它的工作
echo "selected version\tnew version\nbbb\tccc\n" | column -t -s $'\t'
Illegal variable name
那麼,什麼是相當於tcsh?
我試圖使用tcsh中column -t -s $'\t'
(這在bash的作品),但我不能找到一種方法,使tcsh中相當於它的工作
echo "selected version\tnew version\nbbb\tccc\n" | column -t -s $'\t'
Illegal variable name
那麼,什麼是相當於tcsh?
tcsh沒有在字符串文字中包含非打印字符的機制,除了直接包含它們。
在bash,你可以這樣做(改變echo
到printf
,因爲它的行爲較爲一致):
$ printf "selected version\tnew version\nbbb\tccc\n" | column -t -s $'\t'
selected version new version
bbb ccc
在tcsh,則可以用文字標籤的字符替換$'\t'
,通過鍵入Ctrl鍵進入-V選項卡 - 但是當您讀取代碼時,它與空格序列無法區分。
這裏有一個解決方案,使用printf
命令\t
轉換爲製表符:
% printf "selected version\tnew version\nbbb\tccc\n" | column -t -s "`printf '\t'`"
selected version new version
bbb ccc
您也可以存儲在一個變量的製表符;您可以使用雙引號或:t
後綴保留文字值,當你使用它:
% set tab = "`printf '\t'`"
% printf "selected version\tnew version\nbbb\tccc\n" | column -t -s "$tab"
selected version new version
bbb ccc
% printf "selected version\tnew version\nbbb\tccc\n" | column -t -s $tab:q
selected version new version
bbb ccc
一般來說,你只需用「\ t」作爲製表符。但是,專欄似乎將字面解釋爲反斜槓和字母t。爲了解決這個問題,你可以通過按cntl-v然後tab(用引號括起來)來明確地輸入一個製表符。
但是請注意,在您的具體示例中,根本不需要-s參數,因爲默認情況下,列將按空格分隔。
不,一般''\ t「'是一個由反斜槓後跟字母't'組成的字符串。 *某些*命令會將該序列轉換爲製表符。 'column'在默認情況下使用空格,但手冊頁*不會說它使用製表符。 – 2013-03-05 19:33:06
[強制性鏈接](http://www.faqs.org/faqs/unix-faq/shell/csh -爲什麼不/)。 – 2013-03-05 19:55:19