删除符号
我新的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
读 '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',所以这是否适用于您可能取决于您的环境。
感谢队友,这个工作:) – Ebbcom 2009-11-22 02:37:08
+1的链接。 – 2011-02-10 04:45:42
第一行在配置文件中。
后面两行在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
@Ebbcom:当你接受答案时,你可以赚取几点积分,并让那些让你可以接受的答案开心。 – 2009-11-22 18:14:15