我只想从iwconfig
命令打印接口名称
,这是以下命令的输出iwconfig
:
wlp2s0 IEEE 802.11 ESSID:"CoreFragment"
Mode:Managed Frequency:2.442 GHz Access Point: 0C:D2:B5:55:DF:74
Bit Rate=72.2 Mb/s Tx-Power=22 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Power Management:on
Link Quality=55/70 Signal level=-55 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:4 Invalid misc:6567 Missed beacon:0
enp3s0 no wireless extensions.
wlx00e02d01076f IEEE 802.11bgn ESSID:"Aleph_inCar" Nickname:"<WIFI@REALTEK>"
Mode:Master Frequency:2.412 GHz Access Point: 00:E0:2D:01:07:6F
Bit Rate:72.2 Mb/s Sensitivity:0/0
Retry:off RTS thr:off Fragment thr:off
Power Management:off
Link Quality=4/100 Signal level=4/100 Noise level=0/100
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
lo no wireless extensions.
enx001e101f0000 no wireless extensions.
我试过这个:
iwconfig | grep ESSID | sed 's/\"//g' | cut -f1 -d" "
但我在输出中也没有无线扩展
我只想从iwconfig
命令获取输出
如何仅打印wlp2s0,enp3s0,wlx00e02d01076f,enx001e101f0000
...
答案1
你的命令完美运行。只需将 STDERR 输出重定向到 STDOUT,以便根据需要处理它们grep
:cut
iwconfig 2>&1 | grep ESSID | sed 's/\"//g' | cut -f1 -d" "
然而,这种方法使用grep
,sed
和cut
是一种矫枉过正。grep
正如下面的更新中所建议的,一个单一的可以让你得到你想要的。
UDP日期:
根据编辑后的问题,并考虑到用户正在使用 Ubuntu(因此grep
支持 Perl 正则表达式),这是一种方法:
iwconfig 2>&1 | grep -oP "^\w+"