GNU/Linux >> Belajar Linux >  >> Ubuntu

Ekstrak Nilai Dari Terminal?

Pertanyaan ini sudah memiliki jawaban di sini :Cara menulis skrip awk yang menangkap waktu ping

(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:

  1. grep

    ping 192.168.1.1 | grep -Po 'time=\K\S+'
    
  2. Perl

    ping 192.168.1.1 | perl -lne '/time=(\S+)/ && print $1'
    
  3. awk

    ping 192.168.1.1 | awk -F'[= ]' '/time=/{print $(NF-1)}'
    

Ubuntu
  1. Cara Langsung Keluar dari Ubuntu Dari Terminal

  2. Ubuntu – Masalah Ping Dari Antarmuka Tertentu?

  3. ekstrak waktu rata-rata dari ping -c

  1. Ekstrak File Dari Gambar Docker?

  2. Ekstrak Grafik Dari Pdfs?

  3. Bagaimana Cara Mengkonfigurasi Firefox Dari Terminal?

  1. Buka Folder di Aplikasi Terminal Apa Pun dari Nautilus

  2. Bagaimana Cara Mengaktifkan / Menonaktifkan Broadband Seluler Dari Terminal?

  3. Matikan mesin Windows dari terminal linux