我新的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
我新的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