Linux 常用文本处理实例
判断MAC地址是否合法
MAC地址在OpenWRT中还是经常遇见的,因此有必要掌握对他的格式校验,首先我们必须确定MAC的输入格式,此处以xx:xx:xx:xx:xx(12位加冒号)为例为了判断输入的字符串是否符合该格式,可以结合正则表达式进行如下判断,其中正则表达式[]中的表示匹配小写字母a-f,数字0-9,大写字母A-F中的任意字符,该范围也是组成MAC地址的范围,其他均为非法,{}中的2表示匹配这样的字符2次
#!/bin/bash
mac_str="11:22:33:44:55:66"
echo $mac_str | grep -oE '[a-f0-9A-F]{2}:[a-f0-9A-F]{2}:[a-f0-9A-F]{2}:[a-f0-9A-F]{2}:[a-f0-9A-F]{2}:[a-f0-9A-F]{2}' > /dev/null
if [ $? = 0 ];then
echo "mac is ok"
else
echo "mac is error"
fi
判断IP是否合法
IP地址也是linux系统中常见的格式,
- 修改JSON字符串中的value值
json在linux世界当中作为配置文件还是比较常见的,下面介绍在bash环境下使用脚本通过key修改value的值
配置文件config.json内容如下
{
"local_address":"0.0.0.0",
"local_port":1080,
"method":"aes-256-cfb",
"server_port":9003,
"server":"47.90.67.206",
"password":"Maft0ic7cyam9ib"
}
key="server";
value="11.22.33.44";
cat config.json | sed "s/\"${key}\":\"[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\",/\"server\":\"$value\",/g"
大小写转换
大小写转化需要用到
tr
命令
- 大写转小写
local mac_up="AA:BB:CC:DD:EE:FF";
local mac_low=`echo $mac_up | tr '[A-Z]' '[a-z]'`
echo $mac_low
- 小写转大写
local mac_low="aa:bb:cc:dd:ee:ff";
local mac_up=`echo $mac_up | tr '[a-z]' '[A-Z]'`
echo $mac_up
进制转换
- 十进制转换成二进制
echo 256|awk -F. '{for(i=1;i<=NF;i++){a="";b=$i;while(b){a=b%2 a;b=int(b/2)}printf("%08d%s",a,i!=NF?".":"\n")}}'
- 二进制转换成十进制
echo 00000001.00000001.00000001.00000001 |awk -F. 'function bin2dec(a,b,i,c){b=length(a);c=0;for(i=1;i<=b;i++){c+=c;if(substr(a,i,1)=="1")c++}return c}{for(j=1;j<=NF;j++)printf("%d%s",bin2dec($ j),j!=NF?".":"\n")}'