我正在准备 LPIC-1 考试,但我无法理解以下命令剪切示例:
ifconfig enp3s0f2
产生以下结果:
enp3s0f2: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 00:90:f5:e5:e4:7c txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
然后,我运行显示此输出的命令ifconfig enp3s0f2 | grep ether | cut -d " " -f 10
,因为我想隔离 MAC 地址:00:90:f5:e5:e4:7c
然而,我只使用了-f
值为 10 的参数。我不明白为什么是 10 而不是另一个数字。我已经查看了几页有关如何使用 cut 命令和不同参数的示例,但在这个示例中,它对我来说根本没有意义。
如何隔离这个MAC地址它应该是值10分配给-f?
答案1
这是因为我们使用了分隔符,前面有 8 个空格ether
我们可以使用下面的代码进行检查。
ifconfig enp3s0f2 | grep ether | sed 's/ether.*//' |grep -o ' ' | wc -l
8
所以第 9 个字段是ether
,第 10 个字段是00:90:f5:e5:e4:7c
答案2
从man cut
:
-d, --delimiter=DELIM
use DELIM instead of TAB for field delimiter
-f, --fields=LIST
select only these fields; also print any line that contains no delimiter character, unless the -s option is specified
因此,您将按每个分隔字符(在您的情况下为空格)分割输出。这会产生一个字段数组。该-f
选项告诉 cut 仅返回第 10 个字段。