Np. Mam plik (wyprodukowany z echo -e "var1\tvar2\t\var3\tvar4" > foo
), który jest wyprowadzany jako:
$ cat foo
case elems meshing nlsys
uniform 2350 0.076662 2.78
non-conformal 348 0.013332 0.55
scale 318 0.013333 0.44
smarter 504 0.016666 0.64
submodel 360 .009999 0.40
unstruct-quad 640 0.019999 0.80
unstruct-tri 1484 0.01 0.88
Wolę takie dane wyjściowe (tutaj użyłem vim
i :set tabstop=14
):
case elems meshing nlsys
uniform 2350 0.076662 2.78
non-conformal 348 0.013332 0.55
scale 318 0.013333 0.44
smarter 504 0.016666 0.64
submodel 360 .009999 0.40
unstruct-quad 640 0.019999 0.80
unstruct-tri 1484 0.01 0.88
Mogę uzyskać tę samą funkcjonalność, cat
jeśli korzystam $ tabs=15
z bash (zobacz to pytanie ). Czy istnieje program, który wykonuje tego rodzaju formatowanie automatycznie? Nie chcę eksperymentować z tabs
wartością przed cat
utworzeniem pliku.
shell
command-line
cat
columns
Sebastian
źródło
źródło
-s $'\t'
(nie występuje w implementacjach każdej kolumny) w przypadku, gdy niektóre pola zawierają spacje.$'\t'
oznacza znak tabulacji. Nowa linia jest$'\n'
i tak dalej.column -ts: /etc/passwd
. Wygląda fajnie!-n
, tzn. unikaj łączenia wielu sąsiednich ogranicznikówKilka opcji:
kolumna jest niestandardowym poleceniem, niektóre implementacje / wersje nie obsługują opcji -s. Oblicza szerokość kolumny na podstawie danych wejściowych, ale oznacza to, że może zacząć wyświetlać się dopiero po podaniu wszystkich danych wejściowych.
$'...'
jest składnia ksh93 znaleziona również w zsh i bash.Z zsh:
źródło
Możesz także użyć
rs
jako alternatywy dlacolumn -t
:-c
zmienia separator kolumn wejściowych, ale-c
sam ustawia separator kolumn wejściowych na zakładkę.-z
ustawia szerokość każdej kolumny na szerokość najdłuższego wpisu kolumny, zamiast ustawiać wszystkie kolumny tej samej szerokości. Jeśli niektóre wiersze mają mniej kolumn niż pierwszy wiersz, dodaj-n
.źródło
rs
to jest Nie mam tego polecenia zainstalowanego na moim CentOS ani na moich systemach Ubuntu / Mint.rs
, więc możesz go zainstalowaćapt-get install rs
.(x=$(cat);rs -c -z $(wc -l<<<"$x")<<<"$x")
? Nie wiem, jak bym to zrobił z plikiem csvInnym narzędziem, które może to zrobić
tsv-pretty
z eBay TSV Utilities (Zastrzeżenie: Jestem autor). Dodatkowy krok polega na wyrównaniu pól numerycznych do miejsca dziesiętnego. Na przykład:Istnieje kilka opcji formatowania. Na przykład
-u
podkreśla nagłówek i-f
podobnie formatuje elementy pływające w polu, aby zapewnić czytelność:Więcej informacji jest dostępnych w tsv-pretty referencji .
źródło
Pytanie dotyczyło wyprowadzania kolumn rozdzielanych tabulatorami.
Tak więc poprawna odpowiedź to mała adaptacja odpowiedzi @nisetama. Dodałem opcję -C $ '\ t', która ustawia formatowanie wyjściowe.
Ale Kudo to @nisetama :)
źródło
PRZYKŁADOWE BIEGI
REF LIB na: https://github.com/gdbtek/linux-cookbooks/blob/master/libraries/util.bash
źródło
sed
używane.