sed c\命令,IP地址和16进制数互相转换等一些精彩shell代码
来源:互联网 发布:云计算在企业中的应用 编辑:程序博客网 时间:2024/06/15 04:16
1. 首先是sed中的c\命令,这个命令和s/xxx/xxxx/g不同的是,使用c\能把当前sed查找到的一行全部替换成我们指定的TEXT
比如 sed -i "/734/c\Hello" install.log ,这样就把包含有734这样字符串的整个一行替换成了Hello
在使用c\的时候需要注意,如果我们在c\命令后面加的不是一个常数字符串,而是一个变量,那么,要再加一个\符号来解引用,否则变量无法正常解析:
sed -i "/734/c\$Hello" install.log -- 含有734的一行被替换成了$Hello
sed -i "/734/c\\$Hello" install.log -- 含有734的一行被替换成了Hello变量中的值
2. 几个不错的函数,分别是ip转成十六进制,十六进数字转成IP地址,判断两个IP的大小,在一堆IP地址中找出最小的IP和最大的IP,这里面都用到了一个命令printf,这个东西还不错,可以用来格式化输出,下面代码中出现的printf "%08X" ...... 表示将后面的内容格式化成十六进制数,最多保留8位
比如 sed -i "/734/c\Hello" install.log ,这样就把包含有734这样字符串的整个一行替换成了Hello
在使用c\的时候需要注意,如果我们在c\命令后面加的不是一个常数字符串,而是一个变量,那么,要再加一个\符号来解引用,否则变量无法正常解析:
sed -i "/734/c\$Hello" install.log -- 含有734的一行被替换成了$Hello
sed -i "/734/c\\$Hello" install.log -- 含有734的一行被替换成了Hello变量中的值
2. 几个不错的函数,分别是ip转成十六进制,十六进数字转成IP地址,判断两个IP的大小,在一堆IP地址中找出最小的IP和最大的IP,这里面都用到了一个命令printf,这个东西还不错,可以用来格式化输出,下面代码中出现的printf "%08X" ...... 表示将后面的内容格式化成十六进制数,最多保留8位
iptohex() {
IFS=.
for str in $1
do
printf "%02X" $str
done
}
hextoip() {
hex=$1
printf "%d." 0x${hex:0:2}
printf "%d." 0x${hex:2:2}
printf "%d." 0x${hex:4:2}
printf "%d" 0x${hex:6:2}
}
iplarger() {
first=0x$(iptohex $1)
second=0x$(iptohex $2)
first=$(printf "%d" $first)
second=$(printf "%d" $second)
if [ $first -gt $second ];then
return 0
else
return 1
fi
}
ipsmaller() {
first=0x$(iptohex $1)
second=0x$(iptohex $2)
first=$(printf "%d" $first)
second=$(printf "%d" $second)
if [ $first -lt $second ];then
return 0
else
return 1
fi
}
IFS=.
for str in $1
do
printf "%02X" $str
done
}
hextoip() {
hex=$1
printf "%d." 0x${hex:0:2}
printf "%d." 0x${hex:2:2}
printf "%d." 0x${hex:4:2}
printf "%d" 0x${hex:6:2}
}
iplarger() {
first=0x$(iptohex $1)
second=0x$(iptohex $2)
first=$(printf "%d" $first)
second=$(printf "%d" $second)
if [ $first -gt $second ];then
return 0
else
return 1
fi
}
ipsmaller() {
first=0x$(iptohex $1)
second=0x$(iptohex $2)
first=$(printf "%d" $first)
second=$(printf "%d" $second)
if [ $first -lt $second ];then
return 0
else
return 1
fi
}
在一堆IP地址中找出最小的和最大的IP(IPADDRESS是一个数组):
ip_low=${IPADDRESS[1]}
ip_high=$ip_low
for ipnow in ${IPADDRESS[@]}
do
if ismasked $ipnow $localip $localmask
then
if ipsmaller $ipnow $ip_low
then
ip_low=$ipnow
fi
if iplarger $ipnow $ip_high
then
ip_high=$ipnow
fi
else
echo IPs not mask
exit
fi
done
ip_high=$ip_low
for ipnow in ${IPADDRESS[@]}
do
if ismasked $ipnow $localip $localmask
then
if ipsmaller $ipnow $ip_low
then
ip_low=$ipnow
fi
if iplarger $ipnow $ip_high
then
ip_high=$ipnow
fi
else
echo IPs not mask
exit
fi
done
- sed c\命令,IP地址和16进制数互相转换等一些精彩shell代码
- shell命令使用sed获取ip命令
- ip地址与整数互相转换
- IP地址和MAC地址互相查询
- 通过sed命令获取IP地址
- 两行Python代码实现IP地址与十进制整数互相转换
- Shell命令读取IP地址
- php ip地址和整数相互转换代码
- 算法练习Ip地址与整数的互相转换ipstrToint
- java版ip地址与整数的互相转换
- Linux shell mac 地址转换 convert with sed
- C 和 JAVA 中字符串和int等其他类型互相转换
- shell命令之awk、sed和grep
- 域名,IP地址相互转换等
- ip地址和整数转换
- ip地址和整数转换
- 整数和IP地址转换
- IP地址和DWORD转换
- poj 2251 3D地牢
- NYOJ练习题 how many hairstyles can they see?
- Java List ArrayList用法详解
- 修改系统默认值
- 『FFMPEG』ffmpeg-0.11.1的命令行解析与控制
- sed c\命令,IP地址和16进制数互相转换等一些精彩shell代码
- 从键盘任意输入数字a和b,并计算出a的b次方等于多少
- Yii - DAO
- Android应用编程--基本概念
- 如何实现标准TCODE的屏幕增强(HOWTO:Implement a screen exit to a standard SAP transaction)
- oracle plsql developer
- MARS的《Android学习路线》
- 配置文件读取(二)
- 用C模拟异常