Saya ingin mulai mengambil dari garis yang ada CK
di ujung garis dan berhenti menangkap ketika garis ada D
di akhir. Saya mencoba grep "$CK" "$D" file..txt
, tetapi tidak berhasil.
Memasukkan:
kkkkkkkkkkk
jjjjjjjjjjjjjjjjjj
gggggggggggg/CK
JHGHHHHHHHH
HJKHKKLKLLL
JNBHBHJKJJLKKL
JLKKKLLKJLKJ/D
GGGGGGGGGGGGGG
GGGGGGGGGGGGGG
Output yang diinginkan:
gggggggggggg/CK
JHGHHHHHHHH
HJKHKKLKLLL
JNBHBHJKJJLKKL
JLKKKLLKJLKJ/D
text-processing
sed
awk
grep
Rana Khan
sumber
sumber
awk '/\/CK/,/\/D/' input
Jika Anda menggunakan BSD
grep
(tidak mendukung perl regex param-P
), berikut adalah solusinya:Ini bekerja dengan menggabungkan semua garis (mengganti garis baru dengan
_
karakter), memeriksa pola satu garis dan memperluas garis kembali ke keadaan semula.Jika Anda menggunakan GNU
grep
, Anda dapat mencapai pencocokan multilinegrep
, tetapi Anda harus menggunakan perl-regexp untukgrep
(-P
) seperti disebutkan dalam jawaban lain . Anda masih dapat menginstal GNUgrep
pada macOS viabrew install grep
dan gunakanggrep
sebagai gantinya.Atau Anda dapat menggunakan
pcregrep
yang mendukung pola multi-garis (-M
).Anda juga dapat menggunakan
ex
perintah, misalnya:sumber