2009-11-22 8 views
0

Je suis nouveau shell script, dès maintenant en utilisant csh et disons que j'ai une ligne dans mon fichier de configuration comme ceci:Supprimer symbole shell

127.0.0.1:2222 127.0.0.2:3333 127.0.0.3:4444 

Tout ce que je veux est d'analyser pour deux variables dans le tableau:

2222 3333 4444 

Et un autre

127.0.0.1 127.0.0.2 127.0.0.3 
+0

La première ligne est dans un fichier de configuration.
Les deux deuxièmes lignes sont variables 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
est-ce cela? est le plus? que voulez-vous faire avec ces pièces? – Don

+0

@Ebbcom: vous gagnez quelques points lorsque vous acceptez une réponse, ainsi que de rendre heureux ceux qui vous donnent des réponses acceptables. –

Répondre

2

Lire 'C Shell Programming Considered Harmful'.

Comment obtenez-vous la bonne ligne dans le fichier de configuration? Je suis sur le point de supposer qu'il y a juste une ligne dans le fichier, mais tant que vous pouvez identifier la ligne, il y a des façons de le faire.

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

La première capture les 'numéros de port' après les adresses décimales pointées. La seconde capture les adresses. Dans chaque cas, le résultat est affecté à une chaîne avec des espaces séparant les valeurs.


Certains dénigrement plus manuel (sur Mac OS X 10.5.8 - 'homme csh imprime la page 'tcsh') vous propose peut-être après:

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

Avec cette notation (les parenthèses autour l'arrière-cité commande sed), vous créez des tableaux, et peut utiliser:

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

(en supposant que les données de l'échantillon). La partie de la page de manuel où ceci est noté marque la syntaxe avec '(+)' qui pourrait bien signifier 'extension au shell C standard', donc cela dépend de votre environnement.

+0

Merci mon pote, cela a fonctionné :) – Ebbcom

+0

+1 pour le lien. –