删除符号

问题描述:

我新的shell脚本,现在使用csh,让我们说我有这样的在我的配置文件中的一行:删除符号

127.0.0.1:2222 127.0.0.2:3333 127.0.0.3:4444 

所有我想要的是分析它的两个变量在阵列:

2222 3333 4444 

而另一个

127.0.0.1 127.0.0.2 127.0.0.3 
+0

第一行在配置文件中。
后面两行在shell变量中:
a [0] = 2222,a [1] = 3333,a [2] = 4444
b [0] = 127.0.0.1,b [1] = 127.0 .0.2,b [2] = 127.0.0.3
是吗?是更多?你想用这些零件做什么? – Don 2009-11-22 02:19:50

+0

@Ebbcom:当你接受答案时,你可以赚取几点积分,并让那些让你可以接受的答案开心。 – 2009-11-22 18:14:15

读 'C Shell Programming Considered Harmful'。

如何在配置文件中获得正确的行?我打算假定文件中只有一行,但只要你能识别该行,就有办法做到这一点。

set var1=`sed 's/[0-9.]*:\([0-9]*\)/\1/g' config.file` 
set var2=`sed 's/\([0-9.]*\):[0-9]*/\1/g' config.file` 

第一个捕获点号十进制地址后的'端口号'。第二个捕获地址。在每种情况下,结果都被分配给一个空格分隔值的字符串。


一些更多的手动扑(在Mac OS X 10.5.8 - '人CSH' 打印'tcsh的页面)可提供您可能是后:

set arr1=(`sed 's/[0-9.]*:\([0-9]*\)/\1/g' config.file`) 
set arr2=(`sed 's/\([0-9.]*\):[0-9]*/\1/g' config.file`) 

,用这个符号(周围的括号你可以创建数组,并且可以使用:

echo $arr1[1] 
echo $arr1[2] 
echo $arr1[3] 
echo $arr2[1] 
echo $arr2[2] 
echo $arr2[3] 

(假设样本数据)。注意到这部分的手册页标记了带'(+)'的语法,这可能意味着'扩展到标准C shell',所以这是否适用于您可能取决于您的环境。

+0

感谢队友,这个工作:) – Ebbcom 2009-11-22 02:37:08

+0

+1的链接。 – 2011-02-10 04:45:42