Czasami dostaję listę rozdzielanych tabulatorami wejściowymi, która nie jest na przykład całkiem wyrównana
var1 var2 var3
var_with_long_name_which_ruins_alignment var2 var3
Czy istnieje prosty sposób, aby wyrównać je?
var1 var2 var3
var_with_long_name_which_ruins_alignment var2 var3
command-line
text-processing
csv
tabulation
Elazar Leibovich
źródło
źródło
column -t
?columns -t
działa na ogólną spację. Aby pracować tylko z kartami , użyjcolumn -t -s $'\t'
Odpowiedzi:
Tak więc odpowiedź brzmi:
Pamiętaj, że powoduje to podział kolumn w dowolnym miejscu spacji, a nie tylko na kartach. Jeśli chcesz podzielić tylko na zakładki, użyj:
Te
-s $'\t'
zestawy ogranicznik wypustkom tylko i-n
konserwy puste słupki (sąsiednich łap).PS: Chcę tylko podkreślić, że kredyt należy się również Alexowi . Oryginalna wskazówka została podana przez niego jako komentarz do pytania, ale nigdy nie została opublikowana jako odpowiedź.
źródło
column
:)column
wydaje się zawieść, gdy napotka puste komórki. Zobacz ten post . W zależności od posiadanej wersjicolumn
możesz określić-n
opcję rozwiązania tego problemu.column -t -s $'\t'
.Oto skrypt, aby to zrobić:
aligntabs.pl
stosowanie
źródło
pr
inl
są dwa podstawowe narzędzia do formatowania, a potemawk
,sed
,perl
, itd.column
column -t -s $'\t'
zdaje się wykonywać pracę.W przypadku ręcznych tabulatorów:
expand -t 42,48
Automatyczne tabulatory, jak sugeruje Alex :
column -t
(
expand
jest na wszystkich systemach POSIX.column
jest narzędziem BSD, dostępnym również w wielu dystrybucjach Linuksa).źródło
Zgodnie z komentarzem Peter.O, który chciałem wyrównać (dane rozdzielane tabulatorami, TSV), to zdanie działa bardzo ładnie:
źródło
Wyjaśnienie:
Sed doda spację między pustymi ogranicznikami
Kolumna doda równe odstępy między kolumnami
staje się
Mniej otworzy dane wyjściowe w przeglądarce plików. -N i -S dodają odpowiednio numer linii i wyłączają zawijanie
źródło
Dzięki Millerowi ( http://johnkerl.org/miller/doc ) masz całkiem niezłą wydruk.
Biegać
mieć
źródło