Muszę zapisać wynik polecenia grep w pliku, ale chcę również sformatować plik wyjściowy i zachować kolory tak jak w terminalu.
Czy jest na to sposób? Może zapisz grep w jakimś języku znaczników? Jeśli nie jest to możliwe, czy istnieje inne narzędzie, które może wykonać to zadanie?
Próbuję wyróżnić słowo kluczowe wyszukiwania w pliku wyjściowym, dokładnie tak jak w terminalu.
pygmentize
działa z wieloma innymi.W zależności od tego, co chcesz zrobić z plikiem wyjściowym, możliwe jest dodanie kolorów do normalnego pliku tekstowego, ponieważ kolory po prostu pochodzą od niektórych znaków specjalnych. Wygląda na to, że Grep nie chce ich drukować po przekierowaniu do pliku, więc musisz wymusić:
Teraz, kiedy wydrukujesz plik na konsoli, zostanie on wydrukowany w kolorach, ponieważ Bash interpretuje te znaki jako „użyj tego koloru”.
Jeśli jednak otworzysz go w edytorze
vim
, otrzymasz dziwne postacie. Na przykład kiedy używam poleceńDane wyjściowe wyglądają poprawnie, gdy drukuję je za pomocą,
cat
ale kiedy je otwieram,vim
otrzymujęWięc jeśli chcesz użyć edytora, prawdopodobnie nie jest to, czego chcesz.
źródło
Jeśli dobrze zrozumiałem, chcesz zapisać plik końcowy w pliku tekstowym, prawda? Ale chcesz go sformatować za pomocą kolorów. Jeśli tak jest, oto moje pomysły:
Automatyczne wyróżnianie wyjścia
Jak zapewne wiesz, jeśli przechwycisz wyjście grep do pliku tekstowego, dokładnie dlatego, że jest to plik tekstowy, którego nie można sformatować. O ile mi wiadomo, nie można tego zrobić w łatwy sposób.
Mimo to istnieje proste obejście polegające na uświadomieniu edytorowi tekstu, jaki plik jest otwierany. Na przykład, powiedzmy, że twoje wyjście grep ma jakieś składniki bash, więc podświetlenia bash działają dla ciebie (nawiasem mówiąc, często są to kolory, które widzisz na kolorowym wyjściu w terminalu). Zatem sztuczka polega na zapisaniu tekstu w pliku z odpowiednim rozszerzeniem. Zamiast robić coś takiego:
możesz iść
Co sprawi, że gedit (lub dowolny porządny edytor tekstu) automatycznie rozpozna, że mówisz o kodzie bash, i odpowiednio go podświetli. Nie musisz pokolorować wyjścia, program zrobi to za Ciebie, jeśli rozpozna typ otwieranego kodu. Jeśli pracujesz z innymi typami formatów, po prostu dostosuj rozszerzenie do tego, by lepiej dostosować się do tego, czego szukasz (np.> Output.xml,> output.html,> output.py ... itd.). Powodzenia! :)
Podświetlanie niektórych słów w pliku wyjściowym
Więc jeśli mam, chcesz podświetlić wyszukiwane słowa. Ponownie, nie można tego zrobić w zwykłym pliku tekstowym tylko dlatego, że jest to zwykły tekst. Możesz jednak dodać do niego jakiś format w bardzo łatwy sposób, na przykład używając kodu HTML. Spowoduje to przekształcenie danych wyjściowych w kod HTML, a kiedy otworzysz je za pomocą programu zdolnego do interpretacji HTML (pisarz libreoffice, Firefox i 10000 itp.), Zobaczysz kilka słów wyróżnionych.
Aby to zrobić, powiedzmy, że to twój grep, eksportowany do HTML:
A teraz chcesz podświetlić tekst klucza w wynikach . Możesz użyć sed, aby to zrobić, na przykład:
I viola, teraz Twój tekst klucza jest wyróżniony na czerwono.
źródło