字符串按位数分隔

遇到一个实际的问题,通过mac地址查询ip。交换机上获取到的mac地址格式是这样的:aabb-ccdd-eeff,而通过arping获取到的mac地址格式为:aa:bb:cc:dd:ee:ff,查询的时候需要转换格式,步骤如下:

1.将“-”符号替换为空

real_mac=`echo $mac|sed "s/-//g"`

得到real_mac=aabbccddeeff

2.将mac地址分为6个段

mac1=${real_mac:0:2}

mac2=${real_mac:2:2}

mac3=${real_mac:4:2}

mac4=${real_mac:6:2}

mac5=${real_mac:8:2}

mac6=${real_mac:10:2}

3.转换为aa:bb:cc:dd:ee:ff格式

transform_mac=`echo $mac1:$mac2:$mac3:$mac4:$mac5:$mac6`

全部代码如下:

#!/bin/bash

file=/srv/mac_search/record/`date -d "1 days ago" "+%Y-%m-%d"`.txt

ls $file &> /dev/null

if(($?!=0));then

wget http://192.168.1.1/mac-search/`date -d "1 days ago" "+%Y-%m-%d"`.txt -O /srv/mac_search/record/`date -d "1 days ago" "+%Y-%m-%d"`.txt &> /dev/null

fi

real_mac=`echo $1|sed "s/-//g"|sed "s/://g"`

mac1=${real_mac:0:2}

mac2=${real_mac:2:2}

mac3=${real_mac:4:2}

mac4=${real_mac:6:2}

mac5=${real_mac:8:2}

mac6=${real_mac:10:2}

transform_mac=`echo $mac1:$mac2:$mac3:$mac4:$mac5:$mac6|sed "s/[a-z]/[A-Z]/g"`

ip=`grep $transform_mac $file|awk ‘{print $4}‘`

echo $ip

if [ -z "$ip" ];then

echo "No IP matches this MAC"

fi

顺便提几点:

1.获得前一天的日期

date -d "1 days ago" "+%Y-%m-%d"`

获得后一天的日期:"-1 days ago"

2.判断参数是否为空值

if [ -z "$ip" ]

需要加双引号,不然会报错“binary operator expected”

时间: 2024-08-24 12:35:59

字符串按位数分隔的相关文章

按要求分解字符串,输入两个数M,N;M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0。例如:输入2,8, “abc” ,“123456789”,则输出为“abc00000”,“12345678“,”90000000”

1 import java.util.ArrayList; 2 import java.util.Scanner; 3 4 public class Text { 5 6 @SuppressWarnings("resource") 7 public static void main(String[] args) { 8 Scanner scanner = new Scanner(System.in); 9 int M = scanner.nextInt();//M代表输入的M串字符串

【C#】多幅图片写入字符串string,分隔存储

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Drawing; using System.Drawing.Imaging; namespace 图片转化为字符串 { class Program { static void Main(string[] args) { Img2Str(); } public stat

as3 字符串 根据分隔符分隔数据

var goodsStr:String = "ssss1,ssss2"; var goodArr:Array = new Array(); goodArr = goodsStr.split(",",goodsStr.length); for(var i:int = 0;i<goodArr.length;i++){ trace(goodArr[i]); }

SQL Server中自定义函数:用指定的分隔符号分割字符串

2014-11-13 微软SQL Server数据库中包含了很多内置的函数,入下图: 它们用于处理日期.数学.元数据.字符串等. 其中最为常用的就是处理字符串,里面包含了CharIndex()等函数,非常方便使用. 但是对于 特殊字符串的处理,比如:ISBN号 '978-7-5007-7234-7',如果想获取第三个与第四个分割符号之间的数字, 那么SQL 内置函数无法直接做到.这时就需要自定义函数.下面自定义三个函数,用于处理特殊的字符串. 一.按指定符号分割字符串,返回分割后的元素个数 1

字符串处理增强类

/// <summary> /// 字符串处理增强类 /// </summary> public sealed class StringTool { /// <summary> /// 将txt文件读入字符串 /// </summary> /// <param name="aPath"></param> /// <returns></returns> public static string

python 字符串内置方法整理

编码相关内置方法: (1)    str.encode(encoding='utf-8'):返回字符串编码,encoding指定编码方式. >>> a = 'I love Python' >>> a.encode(encoding='utf-8') b'I love Python' >>> a.encode(encoding='gbk') b'I love Python' >>> b.encode(encoding='utf-8')

字符串函数:获取个数,替换,除空格

--字符串函数--LEN():获取指定参数的字符个数select LEN('中华人民共和国')--CHARINDEX(所需要查询的字符串,源字符串,查询起始位置)-IndexOf().能够找到就返回从1开始的索引,如果不能找到就返回0select CHARINDEX('人民','中华人民共和国')select CHARINDEX('人 民','中华人民共和国')select CHARINDEX('人民','中华人民共和国',2)--UPPER ToUpper() LOWER()--ToLower

Java 字符串工具类持续更新中非原创

1 import java.util.ArrayList; 2 import java.util.List; 3 4 /** 5 * 字符串相关的工具类 6 * 7 * @author Fsx 8 * 9 */ 10 public class StringUtil { 11 /** 12 * 判断一个字符串是否为空或等于空字符串 13 * 14 * @param s 15 * 字符串 16 * @return 是否为空或空字符串 17 */ 18 public static final bool

js常用的字符串方法分析

##字符串## 字符串: 由0个或多个字符组成,被成对的英文单引号或双引号包含起来的. 字符编码: 每一个字符在计算机存储的编号. 计算机会保存有一套或几套用于标注编号与字符对应关系的字典.(字符集) 计算机存储单位 位:bit->0/1能存2个字 字节:byte->8bit可存256个不同的字. KB:1KB=1024byte: 字符串的操作,属性(此中str代表字符串) length:只读属性,表示字符串的长度 str.charAt(index):返回str中index位置上对应的字符,若