Linux에서 seq 명령을 사용하는 방법

0
615

Linux PC의 터미널 프롬프트.
Fatmawati Achmad Zaenuri / Shutterstock

리눅스 seq 명령은 눈 깜짝 할 사이에 숫자 목록을 생성합니다. 그러나이 기능을 어떻게 실용화 할 수 있습니까? seq가 어떻게 유용 할 수 있는지 보여 드리겠습니다.

seq 명령

언뜻보기에 Linux seq 명령은 이상한 것 같습니다. 일련의 숫자를 빠르게 생성 할 수 있습니다. 하지만 여기서 키워드는 “빠르게”입니다. 잠시 후이 작은 명령이 얼마나 빨리 실행되는지 알 수 있습니다.

생성 방법에 관계없이 숫자 목록이 얼마나 유용할까요? 그만큼 seq command는 1985 년에 Unix 8 판에 추가되었습니다. 그 이후로 계속 존재했기 때문에 가치있는 일을해야합니다.

Unix의 철학은 한 가지를 잘 수행하는 작은 유틸리티로 가득 차 있다는 것입니다. 이 철학의 핵심 원칙 중 하나는 다른 프로그램의 입력을 받아들이는 프로그램을 작성하는 것입니다. 물론 이는 이러한 프로그램이 다른 프로그램에서 입력으로 사용할 수있는 출력을 생성해야 함을 의미합니다.

그만큼 seq 명령은 파이프 또는 명령 줄 확장을 통해 출력을 사용하는 다른 명령과 함께 사용될 때 자체적으로 제공됩니다.

기본 목록 생성

시작하면 seq 명령 줄 매개 변수로 단일 숫자를 사용하면 1부터 해당 숫자까지 계산됩니다. 그런 다음 아래와 같이 터미널 창에 번호를 한 줄에 하나씩 인쇄합니다.

seq 6

터미널 창에서 "seq 6"명령.

다음과 같이 명령 줄에 두 개의 숫자를 입력하면 첫 번째는 시작 번호가되고 두 ​​번째는 끝 번호가됩니다.

seq 4 10

터미널 창에서 seq 4 10.

세 번째 숫자를 포함하여 단계 크기를 설정할 수 있습니다. 시작 번호와 끝 번호 사이에 있습니다. 다음을 입력하여 묻습니다. seq 6으로 시작하고 48에서 끝나며 6 단계를 사용하는 숫자 목록을 만듭니다.

seq 6 6 48

터미널 창에서 seq 6 6 48.

뒤로 계산

우리는 또한 요청할 수 있습니다 seq 가장 높은 것부터 낮은 것까지의 숫자 목록을 만듭니다. 그러나 그렇게하려면 부정적인 단계를 제공해야합니다.

다음 명령은 단계를 음수로 입력하기 때문에 6 단계에서 24에서 12까지의 목록을 생성합니다.

seq 24 -6 12

터미널 창에서 seq 24 -6 12.

소수로 계산

시작, 끝 및 단계 번호도 소수 일 수 있습니다. 숫자 중 하나가 10 진수이면 다른 숫자도 소수로 처리됩니다. 다음 명령은 0.2 단계로 숫자 목록을 생성합니다.

seq 1 0.2 2

터미널 창에서 seq 1 0.2 2.

seq의 속도

seq 매우 빠릅니다. 유일한 병목은 터미널 창에 명령을 입력하는 데 걸리는 시간입니다. 속도를 테스트하기 위해 250,000 개의 숫자 목록을 요청 해 봅시다.

다음을 사용하여 다음을 입력합니다. time 프로세스를 완료하는 데 걸리는 시간을 확인하려면

time seq 250000

터미널 창에서 시간 시퀀스 250000.

결과는 목록 아래에 표시됩니다. 적당히 전원이 공급되는 테스트 PC에서도 seq 놀라 울 정도로 빠릅니다.

터미널 창에서 seq 250000 명령에 대한 타이밍 결과.

전체 목록이 생성되고 약 1/3 초 만에 화면에 작성되었습니다. 목록을 파일로 리디렉션하면 터미널 창에 입력하는 오버 헤드를 피할 수도 있습니다.

이를 위해 다음을 입력합니다.

time seq 250000 > numbers.txt

time seq 250000> numbers.txt in a terminal window.” width=”646″ height=”147″ onload=”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);” onerror=”this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”></p>
<p>목록을 완성하고 파일을 만드는 데 걸리는 시간은 약 1/7 초입니다.</p>
<h2 role=분리기 사용

줄 바꾸기 문자는 목록의 각 숫자 사이에 표시되는 기본 문자입니다. 그렇기 때문에 각 숫자가 한 줄에 세로 목록으로 표시됩니다. 필요한 경우 다른 구분 기호를 제공 할 수 있습니다.

예를 들어 쉼표로 구분 된 목록, 콜론으로 구분 된 목록 또는 기타 구두점이나 기호를 만들어야한다고 가정 해보십시오. 구분 기호는 실제로 문자열이므로 둘 이상의 문자를 사용할 수 있습니다.

우리는 -s (분리기) 옵션. 다음 명령은 쉼표로 구분 된 목록을 생성합니다.

seq s, 6 6 36

이 명령은 콜론 (:)를 구분자로 :

seq -s: 6 6 36

이 명령은 seq 두 개의 하이픈 (-)를 구분자로 :

seq -s-- 6 6 36

seq s, 6 6 36은 터미널 창에 있습니다.

형식 문자열 사용

그만큼 seq 명령은 C 언어 스타일 형식 문자열도 지원합니다. 이를 통해 구분 기호를 지정하는 것보다 훨씬 더 많은 제어로 출력을 형식화 할 수 있습니다. 형식 문자열을 사용하려면 -f (형식) 옵션.

다음 명령은 seq 0을 사용하여 출력을 두 문자로 채 웁니다.

seq -f "%02g" 6

터미널 창에서 seq -f "% 02g"6.

다음과 같이 원하는 텍스트로 문자열을 포맷하고 문자열의 아무 곳에 나 숫자를 넣을 수 있습니다.

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

seq -f "C와 유사한 형식 문자열의 숫자 % 02g"6 터미널 창에서.

제로 패딩을 설정하는 빠른 방법

제로 패딩을 설정하는 가장 빠른 방법은 -w (동일 너비) 옵션. 이것은 말한다 seq 숫자를 채우기 위해 0을 사용하여 가장 큰 숫자와 너비가 모두 같습니다.

다음 명령은 0부터 1,000까지 100 단계로 계산되며 모든 숫자는 0으로 채워집니다.

seq -w 0 100 1000

seq -w 0100 1000 터미널 창에서.

가장 긴 숫자는 4 개의 문자를 사용하므로 모든 좁은 숫자는 해당 너비까지 0으로 채워집니다 (0도 0으로 채워짐).

BC로 배관 시퀀스

구분 기호를 수학 기호로 설정하고 목록을 bc 명령을 사용하면 해당 목록의 숫자를 평가할 수 있습니다.

다음 명령은 별표 ()로 구분 된 숫자 목록을 생성합니다.*), 1에서 시작하여 6으로 끝남 :

seq -s* 6

그 목록을 bc, 별표 (*) 곱하기 기호 :

seq -s* 6 | bc

우리는 다른 기호로도 이것을 할 수 있습니다. 아래 명령은 더하기 기호 (+)를 사용하여 모든 번호가 추가 된 목록을 만듭니다.

seq -s+ 5

다음을 입력하여 bc 목록을 평가합니다.

seq -s+ 5 | bc

터미널 창에서 seq -s * 6.

seq로 파일 만들기

그만큼 touch 명령은 파일의 시간 및 날짜 스탬프를 업데이트합니다. 파일이 존재하지 않으면 touch가 생성됩니다. 다음과 같이 명령 줄 확장을 사용할 수 있습니다. touchseq 주제별로 이름이 지정되었지만 번호가 다른 파일 모음을 만듭니다.

동일한 기본 이름과 다른 번호 (file-1.txt, file-2.txt 등)를 사용하여 10 개의 파일 세트를 만듭니다. 다음을 입력합니다.

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

그런 다음 다음을 입력하여 파일을 확인합니다.

ls file*

터미널 창에서 $ (seq -f "file- % g.txt"1 10)를 터치합니다.

Bash 루프에서 seq 사용

우리는 사용할 수 있습니다 seq Bash 스크립트에서 소수로 루프를 제어합니다.

편집기에 다음 텍스트를 입력 한 다음 “loops.sh”로 저장합니다.

#!/bin/bash

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

  echo "The value is now: $val"

done

다음으로 다음을 입력하여 새 스크립트를 실행 가능하게 만듭니다.

chmod +x loop.sh

터미널 창에서 chmod + x loop.sh.

스크립트를 실행하면 루프 카운터가 터미널 창에 인쇄됩니다. 그런 다음 다음을 입력하여 루프가 반복 될 때마다 소수점 루프 카운터가 증가하는 것을 확인할 수 있습니다.

./loop.sh

터미널 창에서 ./loop.sh.

기억 seq 거꾸로 셀 수도 있습니다. 같은 방식으로 루프에서 사용할 수 있습니다.

멋지고 간단

한 가지 seq 학습 곡선이 많지 않다는 것입니다. 상쾌하게 짧은 man 페이지이지만 흥미로운 방법으로 사용할 수 있습니다.

실제 크기로 테스트 파일을 빠르게 만들어야하는 경우가 많기 때문에 seq 형식 문자열로. 그런 다음 출력을 리디렉션하여 원하는만큼 더미 데이터 줄을 포함하는 파일을 만듭니다.