Polecenie Cut w systemie Linux

W systemach Linux i Unix dostępnych jest wiele narzędzi, które umożliwiają przetwarzanie i filtrowanie plików tekstowych. cut to narzędzie wiersza poleceń, które umożliwia wycinanie części linii z określonych plików lub danych potokowych i drukowanie wyniku na standardowe wyjście. Można go użyć do wycięcia części linii za pomocą separatora, pozycji w bajcie i znaku.

W tym artykule pokażemy, jak używać cut za pomocą praktycznych przykładów i szczegółowych wyjaśnień najczęściej używanych opcji.

Jak korzystać z polecenia cut #

Składnia cut jest następująca:

Opcje, które informują cut, czy użyć separator, pozycja bajtu lub znak podczas wycinania wybranych fragmentów linie są następujące:

Możesz użyć jednej i tylko jednej z opcji wymienionych powyżej.

Inne opcje to :

  • -d (--delimiter) – Określ separator, który będzie używany zamiast domyślnego ” TAB ”separator.
  • --complement – Uzupełnij zaznaczenie. Gdy używasz tej opcji cut wyświetla wszystkie bajty, znaki, lub pola oprócz se lected.
  • -s (--only-delimited) – Domyślnie cut wypisuje wiersze, które nie zawierają separatora. Gdy ta opcja jest używana, cut nie drukuje wierszy niezawierających separatorów.
  • --output-delimiter – zachowanie domyślne cut to użycie separatora wejścia jako separatora wyjścia. Ta opcja pozwala określić inny łańcuch separatora wyjścia.

Polecenie cut może akceptować zero lub więcej wejściowych nazw PLIKÓW. Jeśli nie określono FILE lub gdy FILE to -, cut odczyta ze standardowego wejścia.

Argument LIST przekazany do -f , -b i -c opcje mogą być liczbami całkowitymi, wieloma liczbami całkowitymi oddzielonymi przecinkami, zakresem liczb całkowitych lub wieloma zakresami liczb całkowitych oddzielonymi przecinkami . Każdy zakres może być jednym z następujących:

  • N N-te pole, bajt lub znak, zaczynając od 1.
  • N- od N-tego pola, bajtu lub znaku do końca wiersza.
  • N-M od N-tego do pola M-tego, bajtu lub znaku.
  • -M od pierwszego do M-tego pola, bajtu lub znaku.

Jak wyciąć według pola nr

Aby określić pola, które mają zostać wycięte, wywołaj polecenie z opcją -f. Jeśli nie zostanie określony, domyślnym separatorem jest „TAB”.

W poniższych przykładach użyjemy następującego pliku. Pola są oddzielone tabulatorami.

test.txt

Na przykład, aby wyświetlić pierwsze i trzecie pole, należy użyć:

Lub jeśli chcesz wyświetlić od pierwszego do czwartego pola:

Jak wyciąć na podstawie separatora #

Aby wyciąć na podstawie separatora, wywołaj polecenie z -d, a następnie separator, którego chcesz użyć.

Na przykład, aby wyświetlić pierwsze i trzecie pole z „:” jako separatorem, należy wpisać:

Jako separatora możesz użyć dowolnego pojedynczego znaku. W poniższym przykładzie jako separatora używamy znaku spacji i wypisujemy drugie pole:

Jak uzupełnić zaznaczenie #

Aby uzupełnić listę pól wyboru, użyj opcji --complement. Spowoduje to wydrukowanie tylko tych pól, które nie są zaznaczone opcją -f.

Następujące polecenie wydrukuje wszystkie pola z wyjątkiem pierwszego i trzeciego:

Jak określić separator wyjścia #

Aby określić separator wyjścia, użyj --output-delimiter. Na przykład, aby ustawić separator wyjścia na _, należy użyć:

Jak wyciąć według bajtów i znaków #

Zanim przejdziemy dalej, dokonajmy rozróżnienia między bajtami i znakami.

Jeden bajt to 8 bitów i może reprezentować 256 różnych wartości. Kiedy powstał standard ASCII, wziął pod uwagę wszystkie litery, cyfry i symbole niezbędne do pracy z językiem angielskim. Tablica znaków ASCII ma 128 znaków, a każdy znak jest reprezentowany przez jeden bajt.Kiedy komputery stały się dostępne na całym świecie, firmy technologiczne zaczęły wprowadzać nowe kodowanie znaków dla różnych języków. W przypadku języków, które mają więcej niż 256 znaków, proste mapowanie 1 do 1 nie było możliwe. Prowadzi to do różnych problemów, takich jak udostępnianie dokumentów lub przeglądanie witryn internetowych. Potrzebny był nowy standard Unicode, który poradziłby sobie z większością światowych systemów zapisu. UTF-8 został stworzony, aby rozwiązać te problemy. W UTF-8 nie wszystkie znaki są reprezentowane przez 1 bajt. Znaki można przedstawić w postaci od 1 do 4 bajtów.

Opcja -b (--bytes) informuje polecenie, aby wyciąć sekcje z każdej linii określonej przez podane pozycje w bajtach.

W poniższych przykładach używamy znaku ü, który zajmuje 2 bajty.

Wybierz piąty bajt:

Wybierz 5., 9. i 13. bajt:

Wybierz zakres od 1 do 5 bajtu:

W chwili pisania tego artykułu cut w pakiecie GNU coreutils nie ma opcja cięcia według znaków. Podczas korzystania z opcji -c cut zachowuje się tak samo, jak w przypadku korzystania z opcji -b.

Wytnij przykłady #

Polecenie cut jest zwykle używane w połączeniu z innymi poleceniami przez potok. Oto kilka przykładów:

Pobierz listę wszystkich użytkowników #

Dane wyjściowe polecenia getent passwd są przekazywane do cut, który drukuje pierwsze pole z użyciem : jako separatora.

Wynik pokazuje listę wszystkich użytkowników systemu.

Zobacz 10 najczęściej używanych poleceń #

W poniższym przykładzie użyto cut aby usunąć pierwsze 8 bajtów z każdego wiersza wyjścia polecenia history.

Wniosek #

cut służy do wyświetlania wybranych pól z każdego wiersza podanych plików lub ze standardowego wejścia.

Chociaż bardzo przydatne, cut ma pewne ograniczenia. Nie obsługuje określania więcej niż jednego znaku jako separatora i nie obsługuje wielu separatorów.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *