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

标签 linux bash grep

我是 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 时),但如果您不需要处理广播地址,那应该不是问题。

关于linux - 如何grep两个IP地址并增加最后一个数字的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45075645/

相关文章:

linux - 为什么 "find . -print0 | xargs -r0 du -chx"和 "du -chx"结果不同?

Linux - 获取文件/目录列表和拥有它的用户名

c++ - 如何安全地序列化 std::basic_istream<char>::pos_type?

linux - bash 脚本中转义字符的问题

bash - 为什么这个不重定向到/dev/null?

linux - 使用 "du"命令获取大小和其他信息

regex - Bash 脚本不会匹配正则表达式

perl - 如何确定 Java 进程是否在 Perl 中运行

正则表达式匹配没有标点符号的邮政编码

linux - 如何使用文本文件中的给定参数对文本文件中的每一行重复一个命令(Bash?)