【发布时间】:2020-04-29 04:10:48
【问题描述】:
我希望 awk 有 2 个分隔符,我知道我可以这样传递,
awk -F"=|/" '{print $1}'
但是我正在尝试传递 2 个字段分隔符,即空格(默认 fs)和正斜杠。我想从下面的字符串中提取IP地址。
inet 10.190.120.13/24 brd 10.190.120.255 scope global prefixroute eth0
目前我正在使用带有管道的 2 awk 语句,我相信会有更好的方法来实现这一点。
awk '{print $2}' | awk -F"/" '{print $1}'
【问题讨论】:
-
如果您希望空格和斜杠作为字段分隔符,您是否尝试过
awk -F' |/' '{print $2}'或者,如果可能有制表符,awk -F'[[:blank:]]|/' '{print $2}'? -
@John1024 我认为这值得回答。
-
感谢您的回答,我将其与
ip a命令一起使用,我也尝试过这种方式,但没有释放 ip 在第 6 列中,我得到了理想的结果-ip a | grep eth0$ | awk -F'[[:blank:]]|/' '{print $6}' -
@opensourcejunkie 非常好。如果您愿意,为了提高效率,可以消除额外的
grep进程:ip a | awk -F'[[:blank:]]|/' '/eno1$/{print $6}'