我已经看过了tcsh的手册,但仍然不知道它在我的情况下应该如何工作,或者它是否应该工作。我基本上需要提取变量的一部分,它的值是一个六位数。因此,我需要删除前两个字符,并检索后四个字符。
下面的示例不起作用(它可能在bash中起作用,但必须使用tcsh ):
set VAR1 = value1
set VAR2 = `echo ${VAR1:2}`
echo VAR2它出现了错误Bad : modifier in $ (2),显然是因为它是bash语法,tcsh不能理解,但不知道如何使用tcsh参数来实现。
发布于 2014-09-06 21:32:54
我不确定是否使用修饰符,但您可以使用cut或sed对字符串进行分割
set VAR1=abcdef"cut“字符3-to-end
echo $VAR1 | cut -c3-捕获除前2个字符以外的所有内容(\(.*\)) (..)
echo $VAR1 | sed 's/..\(.*\)$/\1/'发布于 2014-10-02 04:31:01
您还可以将perl命令行与正则表达式一起使用,如上面@shx2答案中的sed:
echo $VAR1 | perl -pe 's/^\d\d(.*)/$1/'去掉开头的前两位数字。
发布于 2014-10-02 10:17:03
当然,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。)
https://stackoverflow.com/questions/25667373
复制相似问题