0

我正在编写一个 csh 脚本,需要将字符串中的数值分配给一个变量

这是字符串值的示例:“pkt_size=78”

除了数字之外,字符串中的字符将始终相同。

我非常需要提取“=”符号之后的值。

我可以使用什么 Unix 命令来执行此操作?

谢谢,

4

4 回答 4

3
% set var = pkt_size=78
% set num = `echo $var | sed 's/.*=//'`
% echo $num
78

或者,如果您使用的是 tcsh(不是纯 csh)并且前缀是固定字符串:

% set var = pkt_size=78
% set num = $var:s/pkt_size=//
% echo $num
78

强制性参考

于 2013-03-01T19:35:38.887 回答
0

快速破解...

$ NUMBER=`echo pkt_size=78 | sed -e 's/pkt_size=\(\d*\)/\1/'`
于 2013-03-01T19:36:14.597 回答
0

根据C-shell Cookbook

C-shell 没有字符串操作工具。相反,我们主要使用 echo 命令和 awk 实用程序。后者有自己的文本处理语言,您可以编写 awk 脚本来执行复杂的处理,通常来自文件。甚至还有专门介绍 awk 的书籍,例如 Dale Dougherty 的简明标题 sed & awk(O'Reilly & Associates,1990)。当然,详细的描述远远超出了这本食谱的范围。

一个awk黑客会是这样的:

set var=`echo "$var" | awk -F= '{print $2}'`
于 2013-03-01T19:59:39.787 回答
0

如果必须使用 csh,可以使用内置修饰符。

% set v=pkt_size=78
% echo $v:s/pkt_size=//
78

这可能特定于 tcsh。

但是确实有很多理由使用 bourne shell 衍生物(sh、ksh、bash)来代替。

于 2013-03-01T20:09:30.170 回答