2016-07-29 38 views
0

Mein Problem ist, dass ich wie 10.3.1.33 eine IP-Adresse bin mit dieser IP-Adresse innerhalb eines variablen ip=10.3.1.33Übersetzen Nummern (IP-Adresse) innerhalb einer Variablen (bash)

Jetzt möchte ich die 33 im Inneren, die übersetzen IP-Adresse mit einem "*". Die "33" kann sich ändern, so dass diese Zahl automatisch irgendwo in eine Variable gesetzt werden muss oder so ..... Ich habe keine Ahnung wie das geht. Vielen Dank für jede Beratung :)

+0

Das Wort übersetzen bedeutet, dass es Regeln für Ihre Konvertierung gibt. Wenn Sie stattdessen "34" hätten, das Sie in '%' konvertieren möchten. Ich bin nicht wirklich der Fall, also kann man einen Wert durch einen anderen in einer Variablen ersetzen, indem man ip = 10.3.1.33; ip = $ {ip/33/\ * /}; echo: "ip = $ ip" 'Viel Glück. – shellter

Antwort

2

In Ihrem ganz speziellen Fall könnten Sie verwenden:

$ ip="10.3.1.33" 
$ printf "%s\n" "${ip/33/*}" 
10.3.1.* 

Und (Entfernen) alles nach der letzten Periode zu ersetzen:

$ ip="10.3.1.33" 
$ printf "%s\n" "${ip%.*}.*" 
10.3.1.33 

Die später ist POSIX kompatibel während die erste in Bash (unter anderen Schalen) verfügbar ist

+0

Wie macht man die 33 Variable? Diese IP-Adresse kann alles sein, also möchte ich nicht das letzte Oktett der IP in Ihrem Code selbst jedes Mal setzen – tso

+0

@tso macht das zweite Snippet genau das nicht? Entfernen Sie den letzten Teil der IP, und fügen Sie dann '. *' – andlrc

+0

ah ja danke, arbeitete :) – tso

1

Ich kann darüber nachdenken:

ip=1.2.3.4 
ip1=${ip%.*}.*