2014-09-04 103 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。)