2014-09-04 159 views
1

我已經完成了tcsh的手冊,但仍然無法弄清楚它應該如何工作,或者它應該工作。我基本上需要提取部分值爲六位數的變量。所以我需要放棄前兩個字符並檢索最後四個字符。tcsh中的變量替換

下面的例子不工作(這將在bash可能工作,但tcsh中必須使用):

set VAR1 = value1 
set VAR2 = `echo ${VAR1:2}` 
echo VAR2 

它與錯誤Bad : modifier in $ (2)出現,顯然是因爲它是bash的語法,而不是由tcsh的理解,但無法弄清楚如何用tcsh參數來做到這一點。

+0

歡迎使用stackoverflow。如果您發現答案有幫助,請隨時接受和/或向上投票。 – shx2 2014-09-09 21:10:01

回答

1

我不知道如何使用改性劑,但可以使用cutsed切片您的字符串:

set VAR1=abcdef 

「切」 字3到終端

echo $VAR1 | cut -c3- 

捕捉一切( \(.*\)),前2個字符除外(..

echo $VAR1 | sed 's/..\(.*\)$/\1/' 
1

您也可以使用perl的命令行使用類似的sed @ shx2回答上述regexs:

echo $VAR1 | perl -pe 's/^\d\d(.*)/$1/' 

丟棄它開始的前兩個數字。

0

當然tcsh不接受bash風格的修飾符,反之亦然。他們是非常不同的炮彈。

你說你需要提取一個6位數字的最後4位數字。我會假設這個數字是一個非負整數。

如果你認爲它是一個算術問題,而不是作爲一個字符串處理的問題,您可以使用內置的@命令:

% set VAR1 = 123456 
% @ VAR2 = $VAR1 % 10000 
% echo VAR1=$VAR1 VAR2=$VAR2 
VAR1=123456 VAR2=3456 
% 

(爲什麼你使用的tcsh?強制鏈接:http://www.perl.com/doc/FMTEYEWTK/versus/csh.whynot。)