Różne sposoby korzystania z polecenia kolumny w Linux
- 4389
- 474
- Juliusz Janicki
Czy kiedykolwiek byłeś w sytuacji, aby pracować z plikami CSV i wyprodukować wyjście w strukturalnym formacie tabelarycznym? Niedawno pracowałem z oczyszczaniem danych na pliku, który nie jest w odpowiedniej strukturze. Ma tak wiele białych oddziałów między każdą kolumną i muszę ją przekonwertować na format CSV, aby popchnąć do bazy danych. Po wyczyszczeniu i utworzeniu danych wyjściowych w formacie CSV, moje wyjście nie jest atrakcyjne wizualnie w celu weryfikacji integralności danych w pliku CSV. To jest czas, w którym przyda mi się, że polecenie „kolumny”.
Według Manpage, kolumna Komenda "Listy kolumnowe". Krótko mówiąc, kolumna to proste narzędzie, które może sformatować wyjście w kolumna Format (wiersze i pola) na podstawie struktury pliku źródłowego. kolumna Polecenie jest częścią pakietu Util-Linux.
Ważnym punktem, na który należy zwrócić uwagę kolumna Polecenie zachowuje się inaczej w dystrybucjach opartych na debian i REL. Powodem jest użycie Distro oparte na debian „kolumna" z Bsdmainutils Zamiast Util-Linux. Wersja powyżej kolumna polecenie jest nowsze niż Bsdmainutils pakiet. Spójrz na raport o błędach, aby dowiedzieć się więcej o tym.
$ dpkg -s $ (która kolumna)Która kolumna
Do celów demonstracyjnych używam Centos 7 i pokaże różne opcje między Ubuntu I Centos 7. Aby sprawdzić kolumna Wersja Uruchom następujące polecenie. To polecenie pokaże również Util-Linux Wersja pakietu.
$ kolumna --version # nie będzie działać w Debian/Ubuntu
Możesz także sprawdzić wersję Util-Linux, uruchamiając poniższe polecenia.
$ rpm -qa | GREP -I UTIL -Linux # Redhat, Centos, Fedora, Amazon Linux $ dpkg -l | grep -i util -linux # ubuntu
Przed użyciem kolumna Dowódzuj dobrym miejscem na rozpoczęcie, będzie strona Man i zbadać jej opcje.
Kolumna $ Man
Wypisz zawartość pliku w formacie tabelarycznym
kolumna polecenie może utworzyć tabelę, przekazując nazwę pliku jako argument wraz z -T
flaga. ja używam /etc/passwd Jako plik wejściowy.
$ kolumna -t /etc /passwdList Plik zawartość w formacie tabeli
Patrząc na powyższy obraz, możesz pomyśleć, że nie tego się spodziewaliśmy, a wyjście może wyglądać dziwnie. Tak! Masz rację. Kolumny rozważać przestrzeń jako domyślny ogranicznik Podczas tworzenia tabeli. To zachowanie można zastąpić, przekazując niestandardowy ogranicznik.
Niestandardowy delimetr
Niestandardowe ograniczenia dają szeroki zakres opcji do pracy. Aby utworzyć niestandardowe użycie ogranicznika -S
flaga, a następnie ograniczenie. Teraz będziemy używać „:”
jako ogranicznik do podziału /etc/passwd plik.
$ kolumn -s ":" -t /etc /passwdSYMITER
Spójrz na powyższy obraz, w którym tabela jest ładnie sformatowana i ustrukturyzowana. Z Util-Linux wersja 2.23 opcja -S
został zmieniony, aby nie być zachłanymi.
Teraz uruchom to samo polecenie Ubuntu a wynik będzie chciwy. To dlatego, że kolumna Komenda (Bsdmainutils) NA Ubuntu będzie traktować wiele sąsiednich słów jako jedno słowo.
$ kolumn -s ":" -t /etc /passwdChciwość wyjściowa
Aby przezwyciężyć to zachowanie -N
flaga.
$ kolumna -t -s ":" -n/etc/passwd # tylko na debian/ubuntuWyjście nieograniczone
Zignoruj białe puste linie w wyjściu pliku
Gdy masz puste wiersze w pliku wejściowym, polecenie kolumny domyślnie to ignoruje. Zobacz mój plik wejściowy, który jest w formacie CSV i dodałem pustą linię między każdą linią. Teraz utwórzmy tabelę tak jak wcześniej z tym plikiem wejściowym.
$ kolumna -t -s ";" atrapa.tekstIgnoruj puste, a linie
Z powyższego obrazu możesz zobaczyć mój plik wejściowy atrapa.tekst ma puste linie, a kiedy próbuję utworzyć stół, puste linie są ignorowane.
Notatka: To jest domyślne zachowanie zarówno dla „BSDMAINUTILS/UTIL-LINUX”Wariant kolumna Komenda. Ale kolumna (Bsdmainutils) ma opcję zastąpienia tego zachowania, przekazując -mi
flaga.
$ kolumna -e -t -s ”,„ manekin.txt # tylko na Debian/UbuntuZłóż białe linie
Z powyższego obrazu widać, że tabela jest sformatowana prawidłowo, a puste linie nie są ignorowane.
Separator wyjściowy pliku
Domyślnie dwie białe przestrzenie będą używane jako separatory wyjściowe. To zachowanie można zastąpić, przekazując -o
flaga. Nie będziesz mieć dostępnej opcji separatora wyjściowego w kolumna (Bsdmainutils).
$ kolumna -t -s "," -o "||" atrapa.txt # tylko na dystrybucji opartej na RHELSeparator wyjściowy pliku
Konwertuj wiersze plików na kolumny
Używając -X
flaga, którą możesz przekonwertować wiersze na kolumny. To zachowanie jest takie samo w obu Rhel I Ubuntu Warianty polecenia kolumny. Jest to bardzo przydatna funkcja, gdy musisz pobrać określone pole za pomocą polecenia AWK lub kolumny, a następnie przekonwertować je na nagłówek dla pliku CSV.
$ kolumna -x fullCols.tekstKonwertuj wiersze plików na kolumny
Kiedy prowadzisz kolumna polecenie bez użycia żadnych flag zachowanie będzie takie samo, jak przejście -X
flaga.
Znajdź rozmiar kolumny
kolumna wykorzystuje zmienną środowiskową ($ Kolumny)
Aby znaleźć rozmiar terminalu i na podstawie rozmiaru użyj polecenia echo, rozmiar tabeli zostanie wyświetlony w terminalu.
$ echo $ kolumny
Spójrz na obraz poniżej. Początkowo rozmiar mojego terminalu, aby mieć $ Kolumny
rozmiar ustawiony na 60 i przeprowadził polecenie kolumny. Znowu rozmiar mojego terminalu, aby mieć $ Kolumny
rozmiar ustawiony na 114 i ponownie przeprowadził polecenie kolumny. Możesz zobaczyć różnicę w sposób, w jaki kolumna drukuje tabelę, gdy rozmiar terminalu.
$ kolumna -t -s ":" /etc /passwd | Głowa 5Zmień rozmiary kolumn
To wszystko dla tego artykułu. Jeśli masz jakieś opinie, podaj ją w sekcji komentarzy.
- « Różne sposoby czytania pliku w skrypcie Bash za pomocą pętli
- Jak zainstalować Terraform w rozkładach Linux »