Mam dwie zmienne, które zawierają informacje o wielu wierszach i chcę je kolumować.
varA
zwroty
Aug 01
Aug 04
Aug 16
Aug 26
i varB
wraca
04:25
07:28
03:39
10:06
jeśli wydrukuję obie zmienne, zwraca
Aug01
Aug04
Aug16
Aug26
04:25
07:28
03:39
10:06
To, co chcę zrobić, to:
Aug01 04:25
Aug04 07:28
Aug16 03:39
Aug26 10:06
Jestem nowy w używaniu Linuksa i byłbym wdzięczny za porady.
command-line
bash
text-processing
BNairb
źródło
źródło
Odpowiedzi:
Poznaj
paste
część wstępnie zainstalowanych narzędzi GNU :paste
pobiera pliki, a nie zmienne jako dane wejściowe, więc użyłembash
procesu podstawiania i właśnie wydrukowałem zawartość zmiennejprintf
. Domyślnym ogranicznikiem między kolumnami jest toTAB
, że można to zmienić za pomocą-d
opcji, np.paste -d" "
Dla pojedynczego znaku spacji. Aby dowiedzieć się więcej, zapoznajpaste
się z instrukcją online lub uruchominfo '(coreutils) paste invocation'
.źródło
Jeśli chcesz po prostu wyświetlać zmienne tekstowe obok siebie, @dessert ma najprostsze (najlepsze?) Rozwiązanie
print
. Jednak jeśli chcesz mieć możliwość manipulowania każdym kawałkiem osobno, możesz łatwo przekształcić zmienne w tablice, a następnie przejść przez to.źródło
Możesz to zrobić za pomocą narzędzia POSIX
pr
:Wynik:
Lub dla pojedynczej karty:
Lub dla pojedynczego miejsca:
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/pr.html
Lub
column
zutil-linux
pakietu:źródło
Jeśli chcesz uniknąć zewnętrznych narzędzi i zrobić to natywnie w powłoce, możesz użyć
read
osobnych ciągów deskryptorów plików / tutaj dla każdej zmiennej:Mimo że używanie powłoki do przetwarzania tekstu jest często uważane za złą praktykę, może być usprawiedliwione w przypadku, gdy masz już dane w zmiennych powłoki.
źródło