Pertanyaan ini sudah memiliki jawaban di sini :Cara menulis skrip awk yang menangkap waktu ping
(2 jawaban)
Tutup 3 tahun yang lalu.
Ubuntu
(2 jawaban)
Tutup 3 tahun yang lalu.
Saya perlu bantuan untuk mengekstrak hanya nilai waktu saat melakukan ping menggunakan sed.
ping 192.168.1.1
PING 192.168.1.11 (192.168.1.11) 56(84) bytes of data.
64 bytes from 192.168.1.11: icmp_seq=1 ttl=64 time=0.028 ms
64 bytes from 192.168.1.11: icmp_seq=2 ttl=64 time=0.027 ms
64 bytes from 192.168.1.11: icmp_seq=3 ttl=64 time=0.024 ms
64 bytes from 192.168.1.11: icmp_seq=4 ttl=64 time=0.031 ms
Jadi setelah menggunakan sed saya ingin mendapatkan output berikut:
ping 192.168.1.1 | sed '???'
0.028
0.027
0.024
0.031
Terima kasih!
Jawaban yang Diterima:
Dengan sed
Anda dapat melakukan:
ping 192.168.1.1 | sed -n 's/.*time=\([^ ]*\).*/\1/p'
Itu hanya mencari bentangan non-ruang terpanjang setelah time=
, menggunakan tanda kurung untuk menangkapnya sehingga nanti kita dapat menyebutnya sebagai \1
dan hanya mengganti semua yang ada di telepon dengan apa pun yang ditangkap. -n
(jangan mencetak secara default) bersama dengan /p
(cetak jika ini berhasil) di akhir operator substitusi pastikan kami hanya mencetak baris yang relevan.
Saya tidak akan menggunakan sed
untuk ini, alat lain lebih sederhana di sini. Misalnya:
-
grep
ping 192.168.1.1 | grep -Po 'time=\K\S+'
-
Perl
ping 192.168.1.1 | perl -lne '/time=(\S+)/ && print $1'
-
awk
ping 192.168.1.1 | awk -F'[= ]' '/time=/{print $(NF-1)}'
Bagaimana Cara Menghapus Paket Yang Nama Aslinya Tidak Anda Ketahui?
Di Partisi Manakah Bootloader Dipasang?