Polecenie Linux Cut

Polecenie Linux Cut

Rozważ następującą tabelę pracowników, wyprodukowaną w edytorze tekstu z czcionką o stałej szerokości, takiej jak kurier:

Nazwa Data urodzenia Czas narodzin Specjalność Data zatrudnienia Zatrudniony czas
Jan 11-05-91 10:11:12 Inżynier 12-06-14 13:14:15
Paweł 03-16-86 16:17:18 Księgowy 06-19-15 19:20:21
Piotr 07-20-81 Stolarz 08-21-16
Mary 22:23:24 Architekt 01:02:03
Susan 04-17-87 17:22:36 Sekretarz 21-49-55 08:43:32

Załóżmy, że dane te są w pliku o nazwie, pracownik.TXT, w katalogu użytkowników Linux. Istnieje sześć kolumn tekstu z sześcioma nagłówkami, które są imieniem, datą urodzenia, czas urodzenia itp. Istnieje sześć wierszy składających się z jednego wiersza nagłówka i pięciu wierszy danych. Jest to więc tabela kolumn i wierszy (linie). Zawartość każdej komórki tabeli nazywa się pole. Pole jest również podstępem. Ponieważ użyto czcionki o stałej szerokości, istnieją kolumny znaków. Każda kolumna tekstu ma kolumny znaków. Istnieją więc kolumny znaków i kolumny pól.

Aby wpisać tabelę, zacznij od wiersza nagłówka. Wpisz pierwsze pole i naciśnij klawisz TAB na klawiaturze. Wpisz następne pole i naciśnij klawisz TAB. Kontynuuj w ten sposób do ostatniego pola nagłówka. Naciśnij klawisz Enter. Po naciśnięciu klawisza TAB znak „\ t” jest wstawiany do kodu pliku, nie widać przez użytkownika. Jest to jednak postrzegane przez użytkownika jako jedno miejsce (które może być długie). Po naciśnięciu klawisza ENTER na końcu linii, znak „\ n” jest wstawiany do kodu pliku, nie widać przez użytkownika. Klucz TAB jest liczony jako jeden znak.

Każda z linii danych jest wpisana w ten sam sposób. Jeśli jednak pole jest puste, należy je wypełnić, naciskając klawisz Space-Bar, dopóki klawisz TAB nie zostanie naciśnięty, aby przejść do następnej kolumny tekstowej; tak, aby początek następnego pola wyrównał się z początkiem kolumny tekstowej.

W przypadku edytora tekstu Ubuntu klawisz Tab obejmuje osiem znaków. Tak więc, gdy naciśnięty jest klawisz TAB, liczba znaków, które dodaje, jest taka, że ​​jeśli pole było pełne znaków, liczba znaków byłaby wielokrotną osiem. Nie zapominaj, że na końcu wiersza należy nacisnąć klawisz ENTER, a ta akcja wprowadza jeden znak do kodu, nie widać przez użytkownika. Po naciśnięciu klawisza TAB wkładany jest pojedynczy znak do kodu, a nie widać użytkownika. Tak więc klawisz TAB jest liczony jako jeden znak.

Linie są wyznaczone przez nowe znaki. Pola są wyznaczone przez znaki zakładki. Pola niekoniecznie muszą być tak klasyczne, jak opisano powyżej. Zwajnik niekoniecznie może być znakiem zakładki. W powyższej tabeli: „Można uznać za ograniczenie, zamiast zakładki. W takim przypadku podprzestrzeny w każdej linii zostaną ponownie przesyłane. Na przykład w polu Time-of-Birth ”:„ Ograniczyłby dwie kolumny znaków (na obu końcach). W przypadku tego samego tabeli, pierwsza linia i linia dla Petera, nie miałyby żadnego ogranicznika. Cała taka linia staje się jego pole.

Rozgraniczenie kolumn znakowych może przejść przez pola zakładki. Na przykład ostatnie pole „:” w polu Time-of-Birth i pierwsze ”:„ W polu zakładki z zatrudnieniem, rozdziela kolumny znaków, skrzyżowanie pola karty i znaki zakładki. Inne znaki ograniczające, takie jak przecinki, można również znaleźć w innych plikach.

Treść artykułu

  • Wytnij składnię
  • Wycinanie kolumn pola
  • Wycinanie kolumn bajtów
  • Wycinanie kolumn znaków
  • SYMITER
  • Opcja -s
  • Opcja komplementacji
  • Wniosek

Wytnij składnię

Polecenie CUT kopiuje kolumny według znaków lub pola, na podstawie niektórych opcji i ich wartości. Może również wykopać wiersze, ale warunki do kopiowania wierszy są ograniczone. Może kopiować zestaw kolumn i wierszy; Wciąż warunki dla zaangażowanych wierszy są ograniczone. Rzędy to linie. Składnia to:

Opcja Cut… [Plik]…

Może być więcej niż jeden plik. Jednak ten samouczek używa tylko jednego pliku, którego nazwa to pracownik.TXT w katalogu użytkowników i z powyższą zawartością. Jeśli nie ma argumentu pliku, wycinaj odczyty ze standardowego wejścia. Cut jest poleceniem Linux Shell z różnymi możliwymi opcjami. Niektóre opcje przyjmują wartości.

Liczenie kolumn zaczyna się od 1, a nie zero. Tak więc pierwsza kolumna znaków (po lewej) to kolumna 1; Kolumna drugiego znaku to kolumna 2; Kolumna trzeciego znaku to kolumna 3 i tak dalej. Pierwsza kolumna pola (po lewej) to kolumna pola 1; Druga kolumna pola to kolumna pola 2; Kolumna trzeciego pola to kolumna pola 3 i tak dalej.

Tak więc polecenie CUT kopiuje sekcje z wierszy w pliku, jak wskazano. Zwykle drukuje wynik do standardowego wyjścia.

Wycinanie pól

Wycinanie pól oznacza skopiowanie pól. Oryginalny plik pozostaje nienaruszony. Do tego używana jest opcja -f, gdzie F oznacza pole. -f używa znaku tabeli jako jego ogranicznika. Więc w

$ cut -f 1,3 pracownik.tekst

-f oznacza, że ​​polecenie kopiuje pola, a nie znaki ani bajty. Wartość dla -f jest 1 i 3 oddzielona przecinkami i brak miejsca. Oznacza to wyślij na standardowe wyjście, kolumny pola 1 i 3. Wynik to:

Nazwa Czas narodzin
Jan 10:11:12
Paweł 16:17:18
Piotr
Mary 22:23:24
Susan 17:22:36

Jeśli potrzebne były kolumny pola, 1, 3, 5, wartość dla -f byłaby 1,3,5 liczb oddzielona przecinkami i bez miejsca. W ten sposób można wybrać kolumny pola. W takim przypadku Tab jest ogranicznikiem.

Zakres kolumn pola

Poniższe polecenie wybiera kolumny pola z kolumny pola, 2 do pola kolumny, 5, włącznie:

$ cut -f 2-5 pracownik.tekst

Wyjście to:

Data urodzenia Czas narodzin Specjalność Data zatrudnienia
11-05-91 10:11:12 Inżynier 12-06-14
03-16-86 16:17:18 Księgowy 06-19-15
07-20-81 Stolarz 08-21-16
22:23:24 Architekt
04-17-87 17:22:36 Sekretarz 21-49-55

Zwróć uwagę na łącznik między 2 a 5, aby wskazać zakres.

Kopiowanie z numeru pola, n i powyżej

Poniższe kopie polecenia z piątej kolumny pola i powyżej:

$ cut -f 5- pracownik.tekst

Zwróć uwagę na łącznik tuż po 5, bez miejsca pomiędzy. Wynik to:

Data zatrudnienia Zatrudniony czas
12-06-14 13:14:15
06-19-15 19:20:21
08-21-16
01:02:03
21-49-55 08:43:32

Kopiowanie poniżej numeru pola, n

Poniższe polecenie kopiuje drugą kolumnę pola i te poniżej:

$ cut -f -2 pracownik.tekst

Zwróć uwagę na łącznik tuż przed 2, bez miejsca pomiędzy. Wynik to:

Nazwa Data urodzenia
Jan 11-05-91
Paweł 03-16-86
Piotr 07-20-81
Mary
Susan 04-17-87

Wycinanie kolumn bajtów

Kolumny bajtów są kopiowane w podobny sposób do kolumn pola. Jeśli obowiązuje kod ASCII, wówczas bajt jest znakiem. W takim przypadku zakładka (\ t) jest postacią, a jeśli zostanie skopiowana, będzie miała efekt przeniesienia kursora do miejsca, w którym powinna być dziewiąta postać. Opcja bajtów to -B. Poniższe polecenie ilustruje to dla drugiej, trzeciej i czwartej kolumny bajtów (znaków):

$ cut -b 2,3,4 pracownik.tekst

Wyjście to:

AME
OHN
aul
Ete
Ary
USA

Efekt zakładki

Poniższe polecenie wyświetla kolumny bajtów od pierwszego do dziesiątej:

$ cut -b 1-10 pracownik.tekst

Wyjście to:

Nazwa Data
Jan 11-05
Paweł 03-
Piotr
Mary 07-2
Susan 04-1

Liczba bajtów (znaków) w każdym rzędzie nie jest taka sama, ponieważ (a) istnieją dwie postacie przestrzenne po Pawła, na polu Pawła; oraz (b) znak TAB jest liczony jako jeden znak (i ​​ma swój wpływ).

Wycinanie kolumn znaków

Kolumny znaków są obsługiwane w taki sam sposób, jak kolumny bajtów. W rzeczywistości, w ramach kodowania znaków wielobajtowych, użyj znaków zamiast bajtów. Opcją dla znaków jest -C. Poniższe dwa polecenia odtwarzają dwa poprzednie wyjścia (w kolejności):

$ cut -c 2,3,4 pracownik.tekst
$ cut -c 1-10 pracownik.tekst

SYMITER

Zamiast używać znaku TAB do oddzielenia podprzeponujących, ograniczniki takie jak „:”, '-', ', ", itp. może być użyte. Takie ograniczenie ponowne udziałem pod striny, które tworzą linię. Innymi słowy, zamiast pól oddzielonych przez znak TAB, są one oddzielone nowym ogranicznikiem. Polecenia w tym przypadku są podobne do poleceń pola z opcją -f, ale z opcją -d dla ogranicznika, uwzględniona. Poniższe polecenie kopiuje dwa pierwsze pola oparte na „„-„”.

$ cut -d ' -' -f 1,2 pracownik.tekst

Wyjście to:

Nazwa Data urodzenia Czas narodzin Specjalność Data zatrudnienia Zatrudniony czas
Jan 11-05
Paweł 03-16
Piotr 07-20
Mary 22:23:24 Architekt 01:02:03
Susan 04-17

Ten wynik jest logicznie poprawny. Cały pierwszy rząd został wyświetlony, ponieważ nie ma „-”. Cały piąty rząd został wyświetlony, ponieważ nie ma „-”. Znak tablicy jest teraz tylko jedną postacią, choć nadal ma swój efekt. Rząd dla Pawła, na przykład „Paul 03” to teraz pole, a „16” to drugie pole. Z ograniczeniem „-„-”, pionowe wyrównania dla nowych pól jest słabe. Zwrócono dwa pola, oddzielone „-”. „-” został ponownie przełączony.

Pierwsze i piąte rzędy, które nie mają ograniczeń, można usunąć z opcją -s. Pamiętaj, że rzędy w tym temacie to linie.

Opcja -s

Powyższy wynik nie powinien mieć pierwszej i piątej linii. Opcja -S eliminuje linie, które nie mają ograniczeń. Z opcją -s powyższe polecenie staje się:

$ cut -s -d ' -' -f 1,2 pracownik.tekst

Uzyskuje się bardziej zadowalający wynik, to znaczy:

Jan 11-05
Paweł 03-16
Piotr 07-20
Susan 04-17

Dwie nowe, ponownie przemianowane kolumny pola, są teraz wyraźnie widoczne.

Opcja komplementacji

To kopiuje uzupełnienie kolumn wybranych bajtów, znaków lub pól. Poniższe polecenie kopiuje dwa ostatnie pola (według Tab Delimiter), zamiast pierwszych czterech:

$ cut -complement -f -4 pracownik.tekst
Data zatrudnienia Zatrudniony czas
12-06-14 13:14:15
06-19-15 19:20:21
08-21-16
01:02:03
21-49-55 08:43:32

Wniosek

Polecenie CUT kopiuje kolumny bajtów lub znaków lub pod stratami, poza wierszami tekstu w pliku. Domyślnie wysyła wybrane części linii do standardowego wyjścia. Podtrzymanie podtrzymywania to pole. Domyślnie ogranicznik pod strin jest znakiem tablicy. Można to jednak zmienić. Ogranicznik taki jak „-” lub „:” lub „itp. może być użyte. Kiedy to się stanie, linia jest przemiana na różne podprony. Opcję -S można użyć do wyeliminowania z wyjścia, linie, które nie mają ogranicznika.