Saya ingin mulai menangkap dari baris yang memiliki CK di akhir baris dan berhenti mengambil ketika baris memiliki D pada akhirnya. Saya mencoba grep "$CK" "$D" file..txt , tapi tidak berhasil.
Masukan:
kkkkkkkkkkk
jjjjjjjjjjjjjjjjjj
gggggggggggg/CK
JHGHHHHHHHH
HJKHKKLKLLL
JNBHBHJKJJLKKL
JLKKKLLKJLKJ/D
GGGGGGGGGGGGGG
GGGGGGGGGGGGGG
Keluaran yang diinginkan:
gggggggggggg/CK
JHGHHHHHHHH
HJKHKKLKLLL
JNBHBHJKJJLKKL
JLKKKLLKJLKJ/D
Jawaban yang Diterima:
Anda lebih baik menggunakan awk atau sed
awk '/CK$/,/D$/' file.txt
ATAU
sed -n '/CK$/,/D$/p' file.txt
Jika Anda bersikeras grep, inilah cara grep GNU
grep -oPz '(?s)(?<=n)N+CKn.*?D(?=n)' file.txt
Disini
-P mengaktifkan perl-regexp
-z set pemisah garis ke NUL. Ini memaksa grep untuk melihat seluruh file sebagai satu baris
-o hanya mencetak yang cocok
(?s) mengaktifkan PCRE_DOTALL, jadi . menemukan karakter atau baris baru
N cocok dengan apa pun kecuali baris baru
.*? menemukan. dalam mode tidak serakah
(?<=..) adalah pernyataan melihat ke belakang
(?=..) adalah pernyataan pandangan ke depan