grep
. Ada berbagai ekspresi reguler yang akan mengambil ini. Di sini, saya mencari 5 pengulangan dari 2 huruf atau angka diikuti oleh titik dua, lalu dua karakter. The -i
membuat kasus pertandingan sensitif dan -o
merek grep
mencetak hanya bagian cocok. -E
memungkinkan ekspresi reguler yang diperluas. Regex yang sama juga berfungsi dengan PCRE ( -P
).
ifconfig -a | grep -ioE '([a-z0-9]{2}:){5}..'
sed
. The -n
menekan output normal dan -r
memungkinkan ekspresi reguler diperpanjang. Dengan menggunakan regex yang sama seperti di atas, skrip ini akan berusaha mengganti semua yang ada di baris dengan bagian yang cocok dengan regex. Jika substitusi berhasil, garis yang dihasilkan dicetak (karena p
pada akhir substitusi).
ifconfig -a | sed -rn 's/.*(([a-z0-9]{2}:){5}..).*/\1/p'
awk
. Jika baris dimulai dengan karakter kata ( [a-zA-Z0-9_]
), dan memiliki 5 bidang, cetak yang terakhir.
ifconfig -a | awk '/^\w/&&NF==5{print $NF}'
Perl, di mana, seperti biasa, ada lebih dari satu cara untuk melakukannya. Ini adalah logika yang sama dengan yang di awk
atas. The -a
memberitahu perl untuk membagi setiap jalur input ke dalam @F
array.
ifconfig -a | perl -lane 'if(/^\w/&&$#F==4){print $F[$#F]}'
Atau, Anda dapat menggunakan regex dari pendekatan sebelumnya:
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 -a
alih-alihifconfig -a
untuk instalasi non-Inggris, bisa jadi masalah dengan grep. (Yaitu Dalam sistem saya,HWaddr
adalahdirecciónHW
)