首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tcsh中的变量替换

tcsh中的变量替换
EN

Stack Overflow用户
提问于 2014-09-04 21:56:53
回答 3查看 707关注 0票数 2

我已经看过了tcsh的手册,但仍然不知道它在我的情况下应该如何工作,或者它是否应该工作。我基本上需要提取变量的一部分,它的值是一个六位数。因此,我需要删除前两个字符,并检索后四个字符。

下面的示例不起作用(它可能在bash中起作用,但必须使用tcsh ):

代码语言:javascript
复制
set VAR1 = value1
set VAR2 = `echo ${VAR1:2}`
echo VAR2

它出现了错误Bad : modifier in $ (2),显然是因为它是bash语法,tcsh不能理解,但不知道如何使用tcsh参数来实现。

EN

回答 3

Stack Overflow用户

发布于 2014-09-06 21:32:54

我不确定是否使用修饰符,但您可以使用cutsed对字符串进行分割

代码语言:javascript
复制
set VAR1=abcdef

"cut“字符3-to-end

代码语言:javascript
复制
echo $VAR1 | cut -c3-

捕获除前2个字符以外的所有内容(\(.*\)) (..)

代码语言:javascript
复制
echo $VAR1 | sed 's/..\(.*\)$/\1/'
票数 1
EN

Stack Overflow用户

发布于 2014-10-02 04:31:01

您还可以将perl命令行与正则表达式一起使用,如上面@shx2答案中的sed:

代码语言:javascript
复制
echo $VAR1 | perl -pe 's/^\d\d(.*)/$1/'

去掉开头的前两位数字。

票数 1
EN

Stack Overflow用户

发布于 2014-10-02 10:17:03

当然,tcsh不接受bash风格的修饰符,反之亦然。它们是截然不同的外壳。

你说你需要提取一个6位数的最后4位数。我将假设这个数字是一个非负整数。

如果您将其视为算术问题而不是字符串处理问题,则可以使用内置的@命令:

代码语言:javascript
复制
% 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。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25667373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档