Hapus baris setelah pertandingan pertama

Dec 31 2020

Saya perlu menghapus semua baris setelah baris pertama yang berisi kata "rubah"

Ucapkan misalnya untuk file masukan berikut "in.txt"

The quick
brown fox jumps
over
the
lazy dog
the second fox
is hunting

Hasilnya akan seperti itu

The quick
brown fox jumps

Saya lebih suka skrip yang dibuat dalam awk atau sed tetapi alat baris perintah lainnya bagus, seperti perl atau php atau python dll.

Untuk tujuan pencarian saya akan menambahkan baris ini:

Hapus garis setelah kejadian

Edit nanti:

Saya menggunakan alat gnuwin32 di Windows, dan solusi yang dapat saya temukan adalah yang ini:

grep -m1 -n fox in.txt | cut -f1 -d":" > var.txt
set /p MyNumber=<var.txt
head -%MyNumber% in.txt > out.txt

Namun, saya mencari solusi yang lebih pendek dan portabel (yang ini berisi perintah khusus Windows "set / p"

Pertanyaan serupa:

  • Bagaimana cara menghapus semua garis setelah kemunculan pola terakhir?

  • Bagaimana cara menghapus garis sebelum pertandingan mempertahankannya?

  • Hapus semua baris sebelum pertandingan dengan sed

  • Bagaimana cara menghapus garis mulai dari baris pertama sampai garis sebelum menemukan pola '[ERROR] -17-12-2015' menggunakan sed?

  • Bagaimana cara menghapus semua baris sebelum yang pertama dan setelah kemunculan terakhir dari sebuah string?

Jawaban

3 Cyrus Dec 31 2020 at 03:59
awk '{print} /fox/{exit}' file

Dengan GNU sed:

sed '0,/fox/!d' file

atau

sed -n '0,/fox/p' file