-F seçeneği ve desen eşleştirme ile daha az


2

Bir komut lessdosyasından bir dosyayı çağırmak ve çıktısını yeni bir ekran yerine konsola yazdırmasını istiyorum . Dosya bir ekrana sığacak kadar kısaysa, kaydırmayı devre dışı bırakmak istiyorum. Birden fazla ekran varsa, içinde kaydırma yapmak istiyorum, ancak dibe vurduğumda lesskontrolü konsola geri döndürmek istiyorum . Satırlar da doğranmış olmalıdır (bu durumda konsol penceresinden geçen dizelerin sonunu kaybetmek iyidir).

Ayrıca belirli bir deseni vurgulamasını istiyorum.

İşte bağımsız değişkenler için kullanıyorum:

less -SFXE -p "ccc" fileToShow.txt

Kullandığım -S, uzun satırları kesmek için -FXdosya konsolun daha az çizgiler varsa tespit edip kaydırma yapmadan konsola tüm metin yazdırmak ve -Eçıkmak için lessmetin olduğunda durumlar için, ben dosyanın sonuna geldim zaman Konsoldan daha uzun ve kaydırma yapmam gerekiyor.

Bunlar -peşleşmeleri vurgulamak için anahtar ekleyene kadar iyi çalışır .

FileToShow.txt dosyasının şunu içerdiğini varsayalım:

aaa
bbb
ccc
ddd
eee

Desen anahtarı olmadan şunu anlıyorum:

[evan@localhost] $ less -SFXE fileToShow.txt
aaa
bbb
ccc
ddd
eee
[evan@localhost] $ 

Desen eşleştirmesini eklediğimde, daha az boş satırları konsol yüksekliğine kadar yazdırır (boş satırları göstermek için tilde kullanarak).

[evan@localhost] $ less -SFXE -p "ccc" fileToShow.txt
ccc
ddd
eee
~
~
~
~
~
~
~
~
[evan@localhost] $ 

-pDüğmeyi kullanmanın herhangi bir yolu var mı ve kullanırken bu boş satırları göstermemesi gerekiyor -Fmu? (Not: "ccc" satırı istenildiği şekilde vurgulanır, bu istenmeyen yan etkiye sahibim.)

Benim kabuğum bash 3.2.25ve daha az versiyonum 436. İşletim sistemi RHEL'dir.


Sanırım -psadece desenleri araştırıp vurgulamakla kalmıyor, imleci ilk eşleşmeye de getiriyor. İmleç hareket eden kısmının, lessbu boş satırları göstermeye neden olan şey olduğunu düşünüyorum . İmleci hareket ettirmeden vurgulamayı almanın bir yolu var mı?
tomocafe

1
Aşağıdakiler bir toplu iş dosyasında saklanabilir: grep --color=always -E "^|$2" "$1"|less -SFXERburada $1dosya adı ve $2arama şeklidir. Tam olarak düzgün değil, ama bir tür cevap. Bunun, deseni vurgulayarak tüm satırları listeleyeceğini unutmayın; oysa less -pilk eşleşmeden önceki satırları atlar: Bunu yapmak için kullanmanız gerekir sed.
AFH

Evet, bu benim için mükemmel çalışıyor. Bir cevaba yapıştırmak istersen, kabul etmekten mutlu olurum.
tomocafe 23

Yanıtlar:


1

Aşağıdaki komut bir toplu iş dosyasında saklanabilir:

 grep --color=always -E "^|$2" "$1"|less -SFXER

Parametre $1dosya adı ve $2arama modelidir. Dikkat edilecek noktalar:

  • grep -E(veya egrep) birden fazla arama düzeniyle eşleşmeye izin verir;
  • ile eşleşen ^(satır başlangıcı) her satırın listelenmesini sağlar;
  • eşleştirme $2, arama dizesinin vurgulanmasına neden olur;
  • grep --color=always vurgulama çıkış dizilerini boruya kopyalar;
  • less -Ryapar lessvurgulayarak yerine kaçış dizisi gösteren çoğaltmak.

En iyi çözümler değil, bir tür cevaptır. Komutun, deseni vurgulayarak tüm satırları listeleyeceğini unutmayın; oysa less -pilk eşleşmeden önceki satırları atlar: Bunu yeniden oluşturmak için kullanmanız gerekir sed.


0

Hepsi içeride başka bir yol var less. Yine de, birkaç adım içerir.

  1. less fileToShow.txt
  2. Vur &ccc( cccaradığın model olduğu varsayılarak ). Man sayfasından:

    &pattern: Display only lines which match the pattern; lines which do not match the pattern are not displayed. If pattern is empty (if you type & immediately followed by ENTER), any filtering is turned off, and all lines are displayed. While filtering is in effect, an ampersand is displayed at the beginning of the prompt, as a reminder that some lines in the file may be hidden. Certain characters are special as in the / command: ^N or ! Display only lines which do NOT match the pattern. ^R Don't interpret regular expression metacharacters; that is, do a simple textual comparison.

  3. Sonunda, Fkuyruklamaya devam etmek için basın
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.