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 -imembuat kasus pertandingan sensitif dan -omerek grepmencetak hanya bagian cocok. -Ememungkinkan ekspresi reguler yang diperluas. Regex yang sama juga berfungsi dengan PCRE ( -P).
ifconfig -a | grep -ioE '([a-z0-9]{2}:){5}..'
sed. The -nmenekan output normal dan -rmemungkinkan 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 ppada 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 awkatas. The -amemberitahu perl untuk membagi setiap jalur input ke dalam @Farray.
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 -aalih-alihifconfig -auntuk instalasi non-Inggris, bisa jadi masalah dengan grep. (Yaitu Dalam sistem saya,HWaddradalahdirecciónHW)