作者信息:https://home.cnblogs.com/u/huangjiabobk

在Linux中,如何使用请用 cut 或者 awk,sed命令取出 linux 中 eth0 的 IP 地址?

在Linux中,你可以使用多种命令来提取eth0的IP地址,这通常涉及到解析ifconfigip addrip addr show等命令的输出。由于ifconfig在某些现代Linux发行版中可能已被弃用,我会以ip addr为例进行说明。

以下是使用cutawksed命令提取eth0 IP地址的方法:

1. 使用 cut 命令

cut 命令主要用于按列提取文本。但是,由于ip addr的输出格式可能因系统而异,直接使用cut可能不太灵活。不过,如果你知道确切的列位置,并且输出格式是固定的,你可以使用它。但通常,我们会结合其他工具如grep来先过滤出我们需要的行。

ip addr show eth0 | grep 'inet ' | cut -d '/' -f 1 | cut -d ' ' -f 6

这里,我们首先使用grep来过滤出包含inet的行(这通常是IPv4地址的行),然后使用cut命令按/和空格作为分隔符来提取IP地址。

2. 使用 awk 命令

awk 是一个强大的文本处理工具,非常适合处理这种任务。

ip addr show eth0 | grep 'inet ' | awk '{print $2}' | cut -d '/' -f 1

这里,我们首先使用grep过滤出包含inet的行,然后使用awk打印出第二个字段(默认字段分隔符是空格),最后使用cut/作为分隔符来提取IP地址。

或者,你可以直接在awk中完成所有操作:

ip addr show eth0 | awk '/inet / {split($2,a,"/"); print a[1]}'
3. 使用 sed 命令

sed 是一个流编辑器,通常用于对输入流(或文件)进行基本的文本转换。虽然它可以用来提取IP地址,但相对于awk来说,它的语法可能更难以理解和维护。

ip addr show eth0 | grep 'inet ' | sed -n 's/.*inet \([^/]*\)\/.*/\1/p'

综上所述,我们使用grep过滤出包含inet的行,然后使用sed的替换功能来提取IP地址。-n选项告诉sed不要打印所有行,只有匹配的行才会被打印。在替换表达式中,我们使用了正则表达式来匹配IP地址,并将其捕获到第一个捕获组中(由\(...\)定义),然后在替换字符串中引用该捕获组(由\1表示)。最后,p标志告诉sed打印匹配的行。

posted @   黄嘉波  阅读(97)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
版权声明:原创作品,谢绝转载!否则将追究法律责任。--作者 黄嘉波
点击右上角即可分享
微信分享提示