Polecenie cut w systemie UNIX to polecenie wycinania sekcji z każdej linii plików i zapisywania wyniku na standardowe wyjście. Może być używany do wycinania części linii według pozycji bajtu, znaku i pola. Zasadniczo polecenie wytnij przecina linię i wyodrębnia tekst. Konieczne jest określenie opcji za pomocą polecenia, w przeciwnym razie spowoduje to błąd. Jeśli podano więcej niż jedną nazwę pliku, dane z każdego pliku nie są poprzedzane nazwą pliku.
Składnia:
cut OPTION... ...
Rozważmy dwa pliki o nazwach state.txt i capital.txt zawierające 5 nazw stanów indyjskich i wielkie litery.
$ cat state.txtAndhra PradeshArunachal PradeshAssamBiharChhattisgarh
Bez określonej opcji wyświetla błąd.
$ cut state.txtcut: you must specify a list of bytes, characters, or fieldsTry "cut --help" for more information.
Opcje i ich opis z przykładami:
1. -b (bajt): Aby wyodrębnić określone bajty, musisz postępować zgodnie z opcją -b z listą numerów bajtów oddzielonych przecinkami. Zakres bajtów można również określić za pomocą łącznika (-). Konieczne jest podanie listy numerów bajtów, w przeciwnym razie spowoduje to błąd. Tabulatory i znaki cofania są traktowane jak 1-bajtowe znaki.
Używa specjalnej formy do wybierania bajtów od początku do końca wiersza:
In this, 1- indicate from 1st byte to end byte of a line$ cut -b 1- state.txtAndhra PradeshArunachal PradeshAssamBiharChhattisgarhIn this, -3 indicate from 1st byte to 3rd byte of a line$ cut -b -3 state.txtAndAruAssBihChh
2. -c (kolumna): Aby wyciąć według znaku, użyj opcji -c. Spowoduje to wybranie znaków nadanych opcji -c. Może to być lista liczb oddzielonych przecinkami lub zakres liczb oddzielonych myślnikiem (-). Tabulatory i spacje są traktowane jako znaki. Konieczne jest podanie listy numerów znaków, w przeciwnym razie przy tej opcji wystąpi błąd.
Składnia:
$cut -c filename
Tutaj k oznacza pozycja początkowa znaku, a n oznacza końcową pozycję znaku w każdym wierszu, jeśli k i n są oddzielone znakiem „-”, w przeciwnym razie są one tylko pozycją znaku w każdym wierszu z pliku pobranego jako dane wejściowe.
$ cut -c 2,5,7 state.txtnrrahsmirhti
Powyższe polecenie wycięcia drukuje drugi, piąty i siódmy znak z każdego wiersza pliku.
$ cut -c 1-7 state.txtAndhraArunachAssamBiharChhatti
Powyższe polecenie cut drukuje siedem pierwszych znaków z każdego wiersza z pliku.
Cut używa specjalnej formy do wybierania znaków od początku do końca wiersza:
$ cut -c 1- state.txtAndhra PradeshArunachal PradeshAssamBiharChhattisgarhAbove command prints starting from first character to end. Here in command only startingposition is specified and the ending position is omitted.$ cut -c -5 state.txtAndhrArunaAssamBiharChhatAbove command prints starting position to the fifth character. Here the starting positionis omitted and the ending position is specified.
3. -f (pole): -c opcja jest przydatna w przypadku linii o stałej długości. Większość plików uniksowych nie ma ustalonej- długości linii. Aby wyodrębnić przydatne informacje, należy wyciąć według pól, a nie kolumn. Lista pól numer speci fied należy oddzielić przecinkami. Zakresy nie są opisane opcją -f. cut używa tabulatora jako domyślnego separatora pól, ale może również współpracować z innym separatorem, używając opcji -d.
Uwaga: spacja nie jest traktowana jako separator w systemie UNIX.
Składnia:
$cut -d "delimiter" -f (field number) file.txt
Podobnie jak w pliku state.txt pola są oddzielone spacją, jeśli opcja -d nie jest używana, to wypisuje całą linię:
$ cut -f 1 state.txtAndhra PradeshArunachal PradeshAssamBiharChhattisgarh
4. –Komplement: Jak sama nazwa wskazuje, uzupełnia wynik. Ta opcja może być używana w połączeniu z innymi opcjami z opcją -f lub -c.
5. –Output-delimiter: Domyślnie separator wyjścia jest taki sam jak separator wejścia, który określamy w opcji cut z opcją -d. Aby zmienić separator wyjścia, użyj opcji –output-delimiter = ”delimiter”.
$ cut -d " " -f 1,2 state.txt --output-delimiter="%"Andhra%PradeshArunachal%PradeshAssamBiharChhattisgarh
Tutaj polecenie cut zmienia ogranicznik (%) w standardowym wyjściu między pola, które są określone opcją -f.
6. –Wersja: Ta opcja służy do wyświetlania wersji wycięcia, która jest aktualnie uruchomiona w systemie.
$ cut --versioncut (GNU coreutils) 8.26Packaged by Cygwin (8.26-2)Copyright (C) 2016 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3 or later .This is free software: you are free to change and redistribute it.There is NO WARRANTY, to the extent permitted by law.Written by David M. Ihnat, David MacKenzie, and Jim Meyering.
Zastosowania polecenia cut
1. Jak używać ogona z potokami (|): Polecenie cut może być połączone z wieloma innymi poleceniami unixa. W poniższym przykładzie dane wyjściowe polecenia cat są podawane jako dane wejściowe dla polecenia cut z opcją -f służącą do sortowania nazw stanów pochodzących z pliku stan.txt w odwrotnej kolejności.
$ cat state.txt | cut -d " " -f 1 | sort -rChhattisgarhBiharAssamArunachalAndhra
Można go również przesłać potokowo z jednym lub kilkoma filtrami w celu dodatkowego przetwarzania. Podobnie jak w poniższym przykładzie, używamy polecenia cat, head i cut, którego wynik jest przechowywany w nazwie pliku list.txt za pomocą dyrektywy (>).
$ cat state.txt | head -n 3 | cut -d " " -f 1 > list.txt$ cat list.txtAndhraArunachalAssam
Dzięki Saloni Gupta za więcej przykładów.