我正在编写一个csh脚本,需要将字符串中的数值赋给变量
以下是字符串值的示例:" pkt_size = 78"
除了数字之外,字符串中的字符总是相同的。
我非常需要在" ="之后提取值。登录。
我可以使用什么Unix命令来执行此操作?
谢谢,
答案 0 :(得分: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
答案 1 :(得分:0)
快速入侵......
$ NUMBER=`echo pkt_size=78 | sed -e 's/pkt_size=\(\d*\)/\1/'`
答案 2 :(得分:0)
C-shell没有字符串操作工具。相反,我们主要使用echo命令和awk实用程序。后者有自己的文本处理语言,您可以编写awk脚本来执行复杂的处理,通常来自文件。甚至还有专门用于awk的书籍,例如简洁的标题为sed& amp;由Dale Dougherty撰写的文章(O'Reilly& Associates,1990)。当然,详细描述远远超出了本手册的范围。
awk
黑客会是这样的:
set var=`echo "$var" | awk -F= '{print $2}'`
答案 3 :(得分:0)
如果必须使用csh,则可以使用内置修饰符。
% set v=pkt_size=78
% echo $v:s/pkt_size=//
78
这可能是特定于tcsh。
但是使用bourne shell派生词(sh,ksh,bash)的确有很多理由。