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ę
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.