GNU/Linux >> Belajar Linux >  >> Linux

Linux – Bagaimana Cara Mendapatkan Kata Tertentu Dan Mengambil Teks?

Saya memiliki file teks yang mencantumkan nama host dan di baris langsung di bawah menyatakan hasil ping dari pelayan garam. Berikut adalah contoh keluarannya:

T5F6Z12:
   Minion did not return. [Not connected]

Saya harus dapat mengidentifikasi terlebih dahulu apakah teks (Minion tidak kembali) ada dan jika demikian, ambil nama host yang terkait dengan kesalahan sehingga saya dapat menjalankan perintah lain terhadap server itu.

Saya sudah mulai dengan ini:

if grep -q "Minion" /srv/salt/test/ping_results
then
    

Jadi saya cukup yakin saya perlu memahami kata "Minion" karena itu hanya akan muncul untuk server yang gagal dalam pengujian. Tetapi setelah saya mengidentifikasinya, saya tidak yakin bagaimana cara mengambil nama host terkait di atasnya dalam file teks.

Jawaban yang Diterima:

Anda dapat menggunakan -B1 untuk mencetak baris sebelumnya juga dan kemudian ambil hanya baris pertama:

$ grep -B1 'Minion' ip.txt
T5F6Z12:
   Minion did not return. [Not connected]
$ grep -B1 'Minion' ip.txt | head -n1
T5F6Z12:

Atau, lakukan dengan awk :

$ awk '/Minion/{print p} {p=$0}' ip.txt
T5F6Z12:
$ awk '/Minion/{sub(/:$/, "", p); print p} {p=$0}' ip.txt
T5F6Z12

Di sini p terus menyimpan baris terakhir. Ketika baris input berisi Minion , kemudian akan dicetak. Perhatikan bahwa ini akan berfungsi untuk beberapa kecocokan tidak seperti grep solusi di atas yang hanya memberikan kecocokan pertama.


Linux
  1. Linux – Bagaimana Mengetahui Apa yang Harus Diambil Di Dmesg?

  2. Menggunakan Grep –recursive, Bagaimana Cara Mengecualikan Baris Tertentu Dengan Kata 'tidak diinginkan' Dan 'diinginkan' Di dalamnya?

  3. Cara Menemukan Teks Tertentu menggunakan GREP di Linux

  1. Bagaimana cara menambahkan baris header dan trailer ke file di Linux

  2. Bagaimana cara Menggabungkan find dan grep untuk pencarian yang kompleks? ( GNU/linux, temukan, grep )

  3. Cara menangkap kata tertentu dan mengambil teks

  1. Cara menonaktifkan perintah khusus untuk pengguna tertentu di Linux

  2. Linux mencari kata dan menampilkan seluruh baris

  3. Bagaimana cara menemukan semua file yang berisi teks tertentu di Linux?