zoukankan      html  css  js  c++  java
  • sed c\命令,IP地址和16进制数互相转换等一些精彩shell代码

    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位 
    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
    }

     在一堆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
  • 相关阅读:
    ReentrantReadWriteLock锁例子
    线程安全的atomic wrapper classes例子
    统一处理jquery ajax请求过程中的异常错误信息的机制
    理解RESTful架构
    适配器模式的两种实现方式
    第一部分:开发前的准备-第一章 什么是Andorid
    cocos2d-x开发记录:二,基本概念(骨骼动画)
    cocos2d-x开发记录:二,基本概念(粒子系统,Scheduler和定时器)
    cocos2d-x开发记录:二,基本概念(导演,场景,层和精灵,场景切换,效果)
    cocos2d-x开发记录:二,基本概念(动作,动画,坐标系统)
  • 原文地址:https://www.cnblogs.com/super119/p/1909975.html
Copyright © 2011-2022 走看看