Dalam less
, dapatkah Anda mencari menggunakan /pola yang berisi carriage return dan newline? Saya tahu pola Anda dapat diakhiri dengan menggunakan garis $
(dari Bagaimana cara menyertakan baris baru dalam pencarian dalam waktu kurang? ), Tapi saya perlu pola untuk mencocokkan teks yang mencakup beberapa baris.
Saya mencoba \n
, tetapi itu hanya mencari n
karakter.
\n+
1 atau lebih baris baru?less
(search.c:search_range()
). Operasi pencarian / pencocokan dilakukan pada satu baris yang dibatasi satu baris pada satu waktu, sehingga Anda tidak dapat mencocokkan antar batas garis. Lihatline.c:forw_raw_line()
untuk implementasi "readline" sebagaimana dipanggil olehsearch_range
.Jawaban:
Tidak mungkin untuk mencocokkan antar batas garis, karena fungsi pencarian di
less
beroperasi pada satu baris yang dibatasi satu baris pada satu waktu. Ini adalah kasus terlepas dari implementasi regex sistem (GNU, POSIX, PCRE, dll.).Harap dicatat bahwa saya tidak dapat menemukan repositori sumber resmi untuk pengembangan jalur utama
less
, tetapi untuk tujuan tinjauan kode di sini, tautan yang mengikuti berasal dari pohon contrib FreeBSD.Lihat search.c: search_range () untuk implementasi operasi pencarian. Loop di dalamnya memanggil line.c: forw_raw_line () untuk mengambil blok konten baru yang dibatasi baris baru. Blok itu diteruskan ke match.c: match_pattern () di mana pola pencarian (ekspresi reguler) dijalankan.
Untuk mencocokkan beberapa baris, Anda harus menggunakan alat yang berbeda. Salah satu opsi adalah masuk ke editor Anda dan menggunakan kemampuan pencariannya seperti yang disarankan oleh orang lain. Anda dapat meminta editor dengan menekan
v
diless
.sumber
Tidak yakin bagaimana melakukannya
less
, tetapi Anda dapat melakukan hal yang samavim
.http://vim.wikia.com/wiki/Search_across_multiple_lines
Atom
\\_.
menemukan karakter apa pun termasuk end-of-line. Multi\\{-}
cocok sesedikit mungkin.sumber
less
menggunakaned
sintaks regex dan sayangnya tidak mendukung pencocokan multiline.https://www.gnu.org/software/gnulib/manual/html_node/ed-regular-expression-syntax.html#ed-regular-expression-syntax
Saya berharap untuk menemukan itu juga, atau setidaknya menemukan apakah sintaks ini digunakan dalam
less
:Jadi saya bisa menggunakan
.+
pola untuk mencocokkan baris baru. Tapi tidak, tidak.sumber