如何grep两个IP地址并增加最后一个数字的值?

时间:2017-07-13 08:44:17

标签: linux bash grep

我是Linux新手并编写脚本等。我有这个任务,我需要从数据库中找到一个IP地址然后用这个IP grep一堆文件,下一个要查看,如果他们在那里有任何存在。目前我必须先写:

rwhois -Br 0.0.0.0

然后

grep -wl '0.0.0.0\|0.0.0.1' /path/to/some/files

我必须手动更改rwhois和grep的最后一位数字。 我想写一个像这样的简单函数

function info () {
    rhowis -Br $1
    grep -w '$1\|$1'
}

但当然,我必须以某种方式将后者输入的值增加1.任何好的建议?并且对你所改变的内容的一个小解释表示赞赏,因此我可以从中学习。谢谢!

2 个答案:

答案 0 :(得分:1)

ip=$(awk -F\. '{ print $1"."$2"."$3"."($4+1) }' <<< $1)

使用awk可以设置变量ip。我们将分隔符设置为“。”然后输入初始IP地址,然后打印出第一个,第二个和第三个分隔的部分以及第四个增加的部分。

然后我们会采取行动:

grep -w '$1\|$ip'

答案 1 :(得分:1)

使用awk增加最后一位数字很简单:

info() {
    local ip="$1"
    local nextip=$(awk -F. '{ print $1 "." $2 "." $3 "." ($4+1) }' <<<"$1")
    rhowis -Br "$ip"
    grep -w "$ip\|$nextip'
}

请注意,这不会处理换行(当最后一个数字为255时),但如果您不需要处理广播地址,这应该不会有问题。