Jak korzystać z polecenia seq w systemie Linux

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

Polecenie seq

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

Jednak niezależnie od tego, w jaki sposób są generowane, jak przydatna jest lista liczb? Polecenie seq zostało dodane do 8. edycji systemu Unix w 1985 roku. Jest tam od tamtego czasu, więc musi zrobić coś wartościowego.

Plik filozofia systemu Unix jest to, że jest pełen małych narzędzi, które robią jedną rzecz i robią to dobrze. Jednym z głównych założeń tej filozofii jest pisanie programów, które przyjmują dane wejściowe z innych programów. Oczywiście oznacza to również, że programy te muszą generować dane wyjściowe, które mogą być używane jako dane wejściowe przez inne programy.

Polecenie seq działa samoistnie, gdy jest używane z innymi poleceniami, które wykorzystują jego dane wyjściowe, za pośrednictwem potoków lub rozwinięcia wiersza polecenia.

Generowanie listy podstawowej

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

seq 6

Plik

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

seq 4 10

seq 4 10 w oknie terminala.

Możesz ustawić rozmiar kroku, uwzględniają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 zaczynających się od sześciu, kończących się na 48 i wykorzystujących krok szósty:

seq 6 6 48

seq 6 6 48 w oknie terminala.

Liczenie wstecz

Możemy również poprosić seq o utworzenie listy liczb od największej 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 krok jako liczbę ujemną:

seq 24 -6 12

sek. 24-6 12 w oknie terminala.

Liczenie z miejscami dziesiętnymi

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

seq 1 0.2 2

seq 1 0,2 2 w oknie terminala.

Szybkość seq

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

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

time seq 250000

kolejność czasowa 250000 w oknie terminala.

Wyniki są wyświetlane pod listą. Nawet na naszym umiarkowanie wydajnym komputerze testowym seq jest zaskakująco szybki.

Wyniki czasowe dla polecenia seq 250000 w oknie terminala.

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 związanego z wpisywaniem w oknie terminala.

Aby to zrobić, wpisujemy:

time seq 250000 > numbers.txt

time seq 250000> numbers.txt w oknie terminala. ”  width = ”646 ″ height =” 147 ″ onload = ”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);”  onerror = ”this.onerror = null; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);”> </p>
<p> Czas potrzebny na wypełnienie listy i utworzenie pliku wynosi teraz około 1/7 sekundy. < / p> </p>
<h2 role =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.

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

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

seq s, 6 6 36

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

seq -s: 6 6 36

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

seq -s-- 6 6 36

seq s, 6 6 36 w oknie terminala.

Korzystanie z ciągów formatujących

Polecenie seq obsługuje również pliki Styl języka C. ciągi formatujące. Umożliwiają one 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 nakazuje seq, aby używał zer w celu dopełnienia danych wyjściowych do dwóch znaków:

seq -f "%02g" 6

seq -f

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

seq -f "Number %02g in a C-like format string" 6

seq -f

Szybki sposób na ustawienie zerowego wypełnienia

Najszybszym sposobem ustawienia wypełnienia zerami jest użycie opcji -w (równa szerokość). To mówi seq, aby używał zer do wypełnienia liczb, więc wszystkie mają taką samą szerokość jak największa liczba.

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

seq -w 0 100 1000

seq -w 0 100 1000 w oknie terminala.

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

Kolejność rurociągów Do bc

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

Następujące polecenie generuje listę liczb oddzielonych gwiazdkami

seq -s* 6

zaczynając od jednego i kończąc na sześciu:

seq -s* 6 | bc

Jeśli wprowadzimy tę listę do bc, będzie ona oceniać listę przy użyciu gwiazdek

seq -s+ 5

jako symbole mnożenia:

seq -s+ 5 | bc

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

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

seq -s * 6 w oknie terminala. Tworzenie plików z sekwencją Polecenie dotykowe

aktualizuje znaczniki czasu i daty

touch $(seq -f "file-%g.txt" 1 10)

na plikach. Jeśli plik nie istnieje, dotknij go, aby go utworzyć. Możemy użyć rozwijania wiersza poleceń za pomocą dotyku i sekwencji, aby utworzyć kolekcję plików o nazwach tematycznych, ale o różnych numerach.

ls file*

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

Następnie wpisujemy, aby sprawdzić pliki:

dotknij $ (seq -f

Używanie seq w pętlach Bash

#!/bin/bash

  for val in $(seq 5 0.2 6.6); do

  echo "The value is now: $val"

done

Możemy użyć seq w skryptach Bash do kontrolowania pętli z liczbami dziesiętnymi.

chmod +x loop.sh

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

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

./loop.sh

chmod + x loop.sh w oknie terminala.

Kiedy uruchamiamy skrypt, w oknie terminala wyświetlany jest licznik pętli. Następnie możemy wpisać następujące polecenie, aby zobaczyć, jak licznik pętli dziesiętnych rośnie z każdą iteracją pętli:

./loop.sh w oknie terminala.

Pamiętaj, że sekwencja może również liczyć wstecz; możesz użyć tego w pętlach w ten sam sposób. Ładnie i prosto Jedną z rzeczy w seq jest to, że nie ma wiele krzywej uczenia się. To ma

odświeżająco krótki

man, ale nadal możesz go używać w interesujący sposób.

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