一些命令的验证 awk -F "[ :]+"
网上看到一个命令,执行了一下
root@FC7000:~# ifconfig mgmt0|awk -F "[ :]+" 'NR==2{print $4 "/" $NF}'
192.168.3.116/255.255.255.0

这条命令组合使用了 ifconfig、管道 (|)、awk 以及正则表达式来处理文本数据。让我们一步步解析这个命令及其中的正则表达式:
ifconfig mgmt0:ifconfig是一个用于显示或配置网络接口的工具。mgmt0是指定的网络接口名称。这意味着命令将显示有关mgmt0接口的信息。
|:- 管道符号用于将一个命令的输出作为另一个命令的输入。
awk -F "[ :]+" 'NR==2{print $4 "/" $NF}':awk是一个强大的文本处理工具,用于模式扫描和处理语言。-F "[ :]+"指定了字段分隔符。这里,分隔符被设置为一个或多个空格或冒号。这意味着awk会根据空格或冒号(无论它们出现多少次)来分割输入行。'NR==2{print $4 "/" $NF}'是awk的动作部分,指定了对输入行的处理方式:NR==2表示只处理输入的第二行。{print $4 "/" $NF}表示打印第四个字段和最后一个字段,它们之间用斜杠 (/) 分隔。
- 正则表达式
[ :]+:- 这部分正则表达式用于指定
awk的字段分隔符。 [ ]表示字符类,匹配方括号内的任何字符。(空格)和:被包含在字符类中,表示空格或冒号都是有效的分隔符。+表示前面的字符(在这个情况下是空格或冒号的任意一个)可以出现一次或多次。
- 这部分正则表达式用于指定
综上所述,这条命令的目的是从 ifconfig mgmt0 的输出中提取第二行的第四个字段和最后一个字段,并用斜杠将它们分隔开。这通常用于获取网络接口的 IP 地址和子网掩码(尽管这取决于 ifconfig 的输出格式,该格式可能因操作系统和配置而异)。然而,需要注意的是,直接使用字段编号(如 $4 和 $NF)可能不是最可靠的方法,因为输出格式可能会变化。更稳健的方法可能是基于字段内容(如关键字匹配)来提取所需信息。
在 awk 中,$0 表示整个当前处理的行。与 $1, $2, $3, ... 等表示行中的特定字段不同,$0 引用的是整行文本。


浙公网安备 33010602011771号