Zwiń długie linie danych wyjściowych w terminalu

1

Często mam bardzo długie wiersze danych wyjściowych terminala, bez żadnych \ ns, które rzadko są przydatne i przeszkadzają w znalezieniu żądanego wyniku (np. Dzienniki błędów lub zminimalizowane pliki, które są dopasowane przez ack). Czy istnieje narzędzie, które mogłoby zwinąć tak długie linie? Dla mnie ideałem byłoby prawdopodobnie wskazanie w rynnie, że linia została zwinięta, którą można kliknąć, aby rozwinąć, jeśli chcę spojrzeć na pełną linię. Korzystam z terminalu OS X, ale chętnie przełączę się na inne narzędzie, jeśli to zapewnia. Pomocne byłoby również obejście, które odcina linie po szerokości terminala, do którego mógłbym przesłać dane wyjściowe.

timbrell
źródło

Odpowiedzi:

0

Oto kilka prostych rozwiązań. Aby po prostu obciąć linie dłuższe niż 80 znaków, napisz skrypt zawierający

#!/bin/sh
expand "$@" | cut -c1-80

i włóż do niego swój program. Nieco bardziej wyrafinowane podejście jest

#!/bin/sh
expand "$@" | awk '{ if (length <= 80) print; else print substr($0,1,77) "...";}'

To dodaje się ...jako znacznik, gdy odrzuca dane. Daje ci tylko pierwsze 77 znaków, więc ...sam nie przekracza marginesu.

expandPolecenie służy do rozszerzenia spacje, bo cuti awkpolecenia są po prostu liczenie znaków, a nie sobie sprawę, że linia zawierająca więcej niż dziesięć kart jest zbyt długi.

G-Man
źródło
1
Dzięki, nie wiedziałem o expand. Prawdopodobnie mógłbym tput colstam pracować zamiast 80 dla zmiennych szerokości końcówek.
timbrell