Grep çıkışını bir dosyada olduğu gibi biçimlendirerek saklayın


2

Grep sonucunu, Biçole'deki (Kubuntu) çıktı ile aynı formatta bir dosyada saklamak istiyorum . Bir LibreOffice belgesinde kaydetmeye çalıştım, ancak sonuç metin dosyasındaki sonuçtan farklı değil. Sonuçları biçimlendirmeli dosyada nasıl saklarım? Yani sonucu renkli çıktıyla nasıl kaydederim?

Yanıtlar:


1

Renkleri korumak için --color=always

grep --color=always "pattern" file.txt > newfile.txt

Man sayfasından:

--color[=WHEN], --colour[=WHEN]
      Surround the matched (non-empty) strings, matching lines, context  lines,  file  names,
      line  numbers,  byte  offsets,  and separators (for fields and groups of context lines)
      with escape sequences to display them in color on the terminal.  The colors are defined
      by   the   environment  variable  GREP_COLORS.   The  deprecated  environment  variable
      GREP_COLOR is still supported, but its setting does not have priority.  WHEN is  never,
      always, or auto.

Bu işe yaramadı. Dosyayı açtığımda biçimlendirilmemiş çıktı alıyorum. Sadece catbunu kullandığımda istediğim çıktıyı alıyorum. Yapmak istediğim bu değil.
Parth Shah

@ParthShah: Dosyanızı nasıl okuyorsunuz / görüntülüyorsunuz ? Yukarıdakilerin biçimlendirilmiş çıktıyı tam olarak tanımladığınız şekilde sakladığını göreceksiniz ( catdosyanızın ne zaman biçimlendirilmiş çıktıyı terminalinize yazdırdığına dikkat edin ). Dosyanızı okumak / görüntülemek için kullandığınız program, dosyanın biçimini değiştiriyor olabilir veya basitçe anlayamıyor olabilir.
Steve

grep -rn --color=always pattern * > temp.docSonra da doktorumu açmak için Libre Office 3 kullanıyorum. Libre Office 3'ün formatı anlayamadığını varsayıyorum. Çıktıyı görüntülemek için hangi uygulamayı kullanabilirim?
Parth Shah

@ParthShah: Tüm dosyalarımı düzenlemek için vim kullanıyorum . Ne yazık ki, kolayca biçimlemeyi oluşturan tüm kaçış kodlarının "geçiş yapmasına" izin verecek bir yol bulamadım. Bununla birlikte , kaçış kodlarını çözümleyebilen ve çıktıdaki renk kodlarını yeniden oluşturmak için vim sözdizimini vurgulayan bu komut dosyasını buldum . Açıklamasına göre, tam olarak ne istersen yapmalı (ama ben test etmedim). Eğer sadece dosyalarınızı görüntülemek istiyorsanız, aşağıdakileri kullanarak aralarında gezinebilirsiniz:less -R newfile.txt
Steve


1

Varsayılan olarak, grepboru tesisatı yapılırken veya yönlendirilirken renk formatını kapatır. --color=alwaysSeçeneği ile renk biçimli çıktı vermeye zorlayabilirsiniz :

grep --color=always "pattern" infile > outfile

Renk bilgisi bir demet kaçan karakter olarak görünecektir. Çıkarılan karakterleri daha sonra kaldırmak isterseniz, işte bunun sediçin yapabileceğiniz şık bir kabuk komutu :

sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"

(Not, OS X'te kullanın sed -E "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g")


sedkabuktaki çıktıyı görüntüler. Dosyaya kopyaladığımda, metin kaçış karakterleri olmadan görüntüleniyor. Sanırım ne yapmak istediğimi yapmak mümkün değilgrep
Parth Shah
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.