Jak korzystać z polecenia seq w systemie Linux

Opublikowany: 2022-01-29
Monit terminala na komputerze z systemem Linux.
Fatmawati Achmad Zaenuri/Shutterstock

Komenda Linux seq generuje listy liczb w mgnieniu oka. Ale jak można wykorzystać tę funkcjonalność w praktyce? Pokażemy Ci, jak może Ci się przydać sekwencja.

Kolejne polecenie

Na pierwszy rzut oka polecenie Linux seq wydaje się być czymś dziwnym. Pozwala szybko generować ciągi liczb i to wszystko! Tutaj jednak słowo kluczowe brzmi „szybko”. Za chwilę zobaczysz, jak szybko może działać to małe polecenie.

Jednak niezależnie od tego, jak są generowane, jak użyteczna jest lista liczb? Polecenie seq zostało dodane do 8. edycji Uniksa w 1985 roku. Od tego czasu istnieje, więc musi robić coś wartościowego.

Filozofia Unixa polega na tym, że jest pełen małych narzędzi, które robią jedną rzecz i robią to dobrze. Jedną z głównych zasad tej filozofii jest pisanie programów, które akceptują dane wejściowe z innych programów. Oczywiście oznacza to również, że te programy muszą generować dane wyjściowe, które mogą być używane jako dane wejściowe przez inne programy.

Polecenie seq działa samodzielnie, gdy jest używane z innymi poleceniami, które wykorzystują jego dane wyjściowe, zarówno poprzez potoki, jak i rozwijanie wiersza poleceń.

Podstawowe generowanie listy

Jeśli uruchomisz seq z pojedynczą liczbą jako parametrem wiersza poleceń, liczy się od jednego do tej liczby. Następnie drukuje liczby w oknie terminala, po jednym w wierszu, jak pokazano poniżej:

 sekw. 6 

Reklama

Jeśli wpiszesz dwie liczby w wierszu poleceń, pierwsza będzie numerem początkowym, a druga numerem końcowym, jak pokazano poniżej:

 nast 4 10 

Możesz ustawić rozmiar kroku, dołączając trzecią liczbę. Znajduje się między numerem początkowym i końcowym. Wpisujemy następujące polecenie, aby poprosić seq o utworzenie listy liczb, która zaczyna się od sześciu, kończy na 48 i używa kroku sześciu:

 kolejne 6 6 48 

Liczenie wstecz

Możemy również poprosić seq o utworzenie listy liczb od najwyższej do najniższej. Aby to jednak zrobić, musimy podać krok, który jest negatywny.

Poniższe polecenie tworzy listę liczącą od 24 do 12 w krokach po 6, ponieważ wpisujemy ten krok jako liczbę ujemną:

 seq 24 -6 12 

Liczenie z ułamkami dziesiętnymi

Numery początku, końca i kroku również mogą być ułamkami dziesiętnymi. Jeśli którakolwiek z liczb jest ułamkiem dziesiętnym, pozostałe są również traktowane jako ułamki dziesiętne. Poniższe polecenie generuje listę liczb z krokiem 0,2:

 kolejny 1 0,2 2 

Szybkość seq

seq jest niesamowicie szybki — jedynym wąskim gardłem jest czas potrzebny na wpisanie polecenia w oknie terminala. Aby przetestować jego szybkość, poprośmy o listę 250 000 liczb.

Reklama

Wpisujemy następujące polecenie, używając polecenia time , aby zobaczyć, jak długo trwa proces:

 sekwencja czasu 250000 

Wyniki są wyświetlane pod listą. Nawet na naszym testowym komputerze o średniej mocy, seq jest zaskakująco szybki.

Cała lista została utworzona i zapisana na ekranie w około 1/3 sekundy. Jeśli przekierujemy listę do pliku, możemy nawet uniknąć narzutu wpisywania w oknie terminala.

W tym celu wpisujemy:

 sekwencja czasu 250000 > liczby.txt 

Czas potrzebny na uzupełnienie listy i utworzenie pliku wynosi teraz około 1/7 sekundy.

Korzystanie z separatora

Znak nowego wiersza to domyślny znak wyświetlany między każdą liczbą na liście. Dlatego pojawiają się jako pionowa lista, z każdą liczbą w osobnym wierszu. W razie potrzeby możesz podać inny separator.

Reklama

Załóżmy na przykład, że musisz utworzyć listę rozdzielaną przecinkami, listę podzieloną dwukropkami lub dowolny inny znak interpunkcyjny lub symbol. Ogranicznik jest w rzeczywistości ciągiem, więc możesz użyć więcej niż jednego znaku.

Użyjemy opcji -s (separator). Następujące polecenie wygeneruje listę rozdzielaną przecinkami:

 kolejne, 6 6 36

To polecenie użyje dwukropka ( : ) jako separatora:

 kolejne -s: 6 6 36

To polecenie mówi seq , aby używał dwóch myślników ( - ) jako separatora:

 kolejne -s-- 6 6 36 

Używanie ciągów formatujących

Polecenie seq obsługuje również ciągi formatu w stylu języka C. Pozwalają one na formatowanie danych wyjściowych z dużo większą kontrolą niż tylko określenie separatora. Aby użyć ciągu formatu, użyj opcji -f (format).

Poniższe polecenie mówi seq , aby używał zer w celu uzupełnienia danych wyjściowych do dwóch znaków:

 seq -f "%02g" 6 

Reklama

Możemy sformatować ciąg dowolnym tekstem i umieścić liczbę w dowolnym miejscu ciągu w następujący sposób:

 seq -f "Liczba %02g w łańcuchu formatu podobnym do C" 6 

Szybki sposób na ustawienie dopełnienia zerowego

Najszybszym sposobem ustawienia dopełnienia zerami jest użycie opcji -w (równej szerokości). To mówi seq , aby używał zer do uzupełniania liczb, aby wszystkie miały taką samą szerokość jak największa liczba.

Następujące polecenie liczy od 0 do 1000 w krokach co 100, a wszystkie liczby zostaną uzupełnione zerami:

 seq -w 0 100 1000 

Najdłuższa liczba zajmuje cztery znaki, więc wszystkie węższe liczby są dopełniane zerami do tej szerokości (nawet 0 jest dopełniane do czterech zer).

Rurociąg seq do bc

Ustawiając separator jako symbol matematyczny i przesyłając listę do polecenia bc , możemy ocenić liczby na tej liście.

Poniższe polecenie generuje listę liczb oddzielonych gwiazdkami ( * ), zaczynając od jednego i kończąc na sześciu:

 seq -s* 6
Reklama

Jeśli wprowadzimy tę listę do bc , ocenia listę za pomocą gwiazdek ( * ) jako symboli mnożenia:

 seq -s* 6 | pne

Możemy to zrobić również z innymi symbolami. Poniższe polecenie używa znaku plus ( + ), aby utworzyć listę, w której dodawane są wszystkie liczby:

 kolejne -s+ 5

Wpisujemy następujące polecenie, aby przesłać to do bc i ocenić listę:

 seq -s+ 5 | pne 

Tworzenie plików za pomocą seq

Polecenie touch aktualizuje znaczniki czasu i daty w plikach. Jeśli plik nie istnieje, dotknij go, aby go utworzyć. Możemy użyć rozwijania wiersza poleceń za pomocą touch i seq , aby utworzyć kolekcję tematycznie nazwanych, ale inaczej ponumerowanych plików.

Utworzymy zestaw 10 plików o tej samej nazwie podstawowej i innym numerze (plik-1.txt, plik-2.txt itd.). Wpisujemy:

 dotknij $(seq -f "plik-%g.txt" 1 10)

Następnie wpisujemy następujące polecenie, aby sprawdzić pliki:

 plik ls* 

Używanie seq w Bash Loops

Możemy użyć seq w skryptach Bash do sterowania pętlami z ułamkami dziesiętnymi.

Reklama

Wpisz następujący tekst do edytora, a następnie zapisz go jako „loops.sh”:

 #!/kosz/bash

  dla val w $(seq 5 0,2 6,6); robić

  echo "Wartość to teraz: $val"

Gotowe

Następnie wpisujemy następujące polecenie, aby nasz nowy skrypt był wykonywalny:

 chmod +x loop.sh 

Kiedy uruchamiamy skrypt, licznik pętli jest wypisywany w oknie terminala. Następnie możemy wpisać następujące polecenie, aby zobaczyć, jak licznik pętli dziesiętnych zwiększa się z każdą iteracją pętli:

 ./pętla.sh 

Pamiętaj, że seq może również liczyć wstecz; możesz użyć tego w pętlach w ten sam sposób.

Ładne i proste

Jedną rzeczą w seq jest to, że nie ma wiele do nauki. Ma odświeżająco krótką stronę man , ale nadal możesz jej używać w ciekawy sposób.

Ponieważ często musimy szybko tworzyć pliki testowe o realistycznych rozmiarach, używamy seq z ciągiem formatu. Następnie przekierowujemy wyjście, aby utworzyć plik zawierający tyle wierszy fikcyjnych danych, ile chcemy.

POWIĄZANE: Najlepsze laptopy z systemem Linux dla programistów i entuzjastów