猛砸与其他变量
问题描述:
新的变量,我得到的IP地址这样的:猛砸与其他变量
Ip=`ifconfig | grep inet | grep -v -E 'inet6|127.0.0.1' | \
tr -d [:alpha:] | tr -s [:space:] | cut -d: -f2`
我有这样的情况下的IP:10.1.0.76
我想打一个新的变量与IP变量有另一个ip,例如我的新变量将返回:10.1.0.178
只是最后一个数字的变化,所以我想只获得一部分Ip变量(10.1.0。)并在结尾添加另一个数字。
我试着用SED但我一直有一个像“有没有叫作文件...”
你能帮助我的错误?
答
好了,给你的格式x.y.z.w有IP,你可以使用Perl的正则表达式:
$ echo "120.20.31.78" | perl -pe 's/(.*)\..*/$1\.123/'
120.20.31.123
这将repace最后一个数字( “78”)与 “123”。
所以,你的情况(假设你的 “IP” 变量设置正确),这将是:
Ip=ifconfig | grep inet | grep -v -E 'inet6|127.0.0.1' | tr -d [:alpha:] | tr -s [:space:] | cut -d: -f2 | perl -pe 's/(.*)\..*/$1\.123/'
答
看到这一点,我希望这是你想要什么:
kent$ echo $ip
10.1.0.76
kent$ echo $part
178
kent$ sed -r "s/(.*\.).*/\1$part/" <<< $ip
10.1.0.178
设置$ IP与新的价值:
kent$ ip=$(sed -r "s/(.*\.).*/\1$part/" <<< $ip)
kent$ echo $ip
10.1.0.178
答
您可以使用参数扩展:它只是:${Ip%.*}.178
${Ip%.*}
是带有最后一个点的IP以及删除后的所有内容。 .178
就是你想追加的内容。
这是在上下文中:
# Your original expression
Ip=`ifconfig | grep inet | grep -v -E 'inet6|127.0.0.1' | \
tr -d [:alpha:] | tr -s [:space:] | cut -d: -f2`
# assign a new variable with the ip with different end octet
newIp=${Ip%.*}.178
# Show new ip
echo "$newIp"