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



我对Linux和编写脚本等很陌生。我有这个任务,我需要从数据库中找到一个 IP 地址,然后用这个 IP 和下一个文件来查看它们是否存在。目前我必须先写:

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。有什么好的建议吗?感谢您更改的内容的简短解释,以便我可以从中学习。谢谢!

只需用awk增加最后一个数字很简单:

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

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

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

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

然后,我们将采取行动:

grep -w '$1|$ip'

最新更新