grep. Có nhiều biểu thức chính quy sẽ chọn những thứ này. Ở đây, tôi đang tìm kiếm 5 lần lặp lại gồm 2 chữ cái hoặc số theo sau là dấu hai chấm, sau đó là hai ký tự bất kỳ. Việc -ilàm cho trường hợp khớp không nhạy cảm và -olàm cho grepchỉ in phần phù hợp. -Echo phép mở rộng biểu thức chính quy. Regex tương tự cũng hoạt động với PCREs ( -P).
ifconfig -a | grep -ioE '([a-z0-9]{2}:){5}..'
sed. Việc -ntriệt tiêu đầu ra bình thường và -rcho phép các biểu thức chính quy mở rộng. Sử dụng cùng một biểu thức như trên, tập lệnh này sẽ cố gắng thay thế mọi thứ trên dòng bằng phần của nó phù hợp với biểu thức chính quy. Nếu thay thế thành công, dòng kết quả được in (vì pở cuối thay thế).
ifconfig -a | sed -rn 's/.*(([a-z0-9]{2}:){5}..).*/\1/p'
awk. Nếu dòng bắt đầu bằng một ký tự từ ( [a-zA-Z0-9_]) và có 5 trường, hãy in trường cuối cùng.
ifconfig -a | awk '/^\w/&&NF==5{print $NF}'
Perl, ở đâu, như thường lệ, có nhiều hơn một cách để làm điều đó. Đây là logic tương tự như awktrên. Các -aperl nói để phân chia từng dòng đầu vào thành @Fmảng.
ifconfig -a | perl -lane 'if(/^\w/&&$#F==4){print $F[$#F]}'
Ngoài ra, bạn có thể sử dụng regex từ các phương pháp trước:
ifconfig -a | perl -lne '/(([a-z0-9]{2}:){5}..)/ && print $1'
Coreutils.
LANG_ALL=C ifconfig -a | grep 'HWadd' | tr -s ' ' '\t' | cut -f 5
LANG=C ifconfig -athay vìifconfig -acài đặt không phải tiếng Anh, có thể là vấn đề với grep. (tức là trong hệ thống của tôi,HWaddrlàdirecciónHW)