我想从dhcp-range行中提取Bcast IP地址,该地址在服务器配置文件中指定。
DHCP-范围= 192.168.42.1,192.168.42.253,255.255.255.0,192.168.42.255,24h
我想存储在变量192.168.42.255
中其实我正在使用
DNSMASQ_DIR="dnsmasq.conf"
if [ -e "$DNSMASQ_DIR" ]; then
BcastAddress=`sed -n 3p $DNSMASQ_DIR | awk '{print $1}'`
b=${BcastAddress:53:66}
echo $BcastAddress
echo $b
else
echo "file not exists"
fi
返回:
dhcp-range=192.168.42.1,192.168.42.253,255.255.255.0,192.168.42.255,24h
192.168.42.255,24h
我不明白为什么,包括24小时。与此同时,我认为如果其他IP地址发生变化,我的方法将无效。有没有更有效的方法来解决我的问题?
答案 0 :(得分:2)
您也可以参考cut命令
cut -d',' -f4 dnsmasq.conf
示例:
DNSMASQ_DIR="dnsmasq.conf"
if [ -e "$DNSMASQ_DIR" ]; then
b=`sed -n 3p $DNSMASQ_DIR | cut -d',' -f4 `
echo $b
else
echo "file not exists"
fi
sed命令打印第3行和cut命令提取,
输出
192.168.42.255
答案 1 :(得分:1)
如果您想在awk
$ echo "dhcp-range=192.168.42.1,192.168.42.253,255.255.255.0,192.168.42.255,24h" | awk -F, '{print $4}'
192.168.42.255
代码的简化版
您甚至可以使用awk作为
来简化整个脚本$ awk -F, '/^dhcp-range/{print $4}' dnsmasq.conf
192.168.42.255
-F,
将字段分隔符设置为,
/^dhcp-range/
选择以dhcp-range
print $4
打印第四列“
或强>
$ awk -F, 'NR==3{print $4}' dnsmasq.conf
192.168.42.255
NR==3
选择第三行