如何在Linux终端中移除IP地址的最后一个八位组(保留末尾点)
解决方法
这里提供几种在Bash终端中实现需求的实用方案:
方法一:参数替换(最简洁)
利用Bash的参数替换特性,先删除最后一个.及之后的内容,再手动补上末尾的点:
address=123.456.789.01 result="${address%.*}." echo "$result"
解释:${address%.*}会从变量末尾开始,删除匹配到的最短.*(即最后一个点和后面的所有字符),再追加一个点就得到目标结果。
方法二:sed命令实现正则替换
通过sed匹配并替换末尾的目标内容:
address=123.456.789.01 result=$(echo "$address" | sed 's/\.[^.]*$/.') echo "$result"
解释:正则\.[^.]*$匹配字符串末尾的点,以及点后所有非点字符,将其替换为单个点即可。
方法三:awk分割拼接
用awk按点分割IP,拼接前三个字段并追加末尾的点:
address=123.456.789.01 result=$(echo "$address" | awk -F '.' '{print $1"."$2"."$3"."}') echo "$result"
解释:-F '.'指定分割符为点,打印前三个字段并分别拼接点,最后再补一个末尾的点。
内容的提问来源于stack exchange,提问作者Jonathan Rayo
相关产品推荐
相关产品推荐

