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

게시 됨: 2022-01-29
Linux PC의 터미널 프롬프트.
Fatmawati Achmad Zaenuri/Shutterstock

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

seq 명령

언뜻 보기에 Linux seq 명령은 이상한 것처럼 보입니다. 숫자 시퀀스를 빠르게 생성할 수 있습니다. 그게 전부입니다! 하지만 여기서 키워드는 "빨리"입니다. 잠시 후 이 작은 명령이 얼마나 빨리 실행되는지 알게 될 것입니다.

그러나 생성 방법에 관계없이 숫자 목록이 얼마나 유용합니까? seq 명령은 1985년 Unix 8판에 추가되었습니다. 그 이후로 계속 있었으므로 가치 있는 일을 해야 합니다.

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

seq 명령은 파이프나 명령줄 확장을 통해 출력을 사용하는 다른 명령과 함께 사용될 때 고유하게 나타납니다.

기본 목록 생성

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

 시퀀스 6 

광고

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

 시퀀스 4 10 

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

 시퀀스 6 6 48 

거꾸로 세기

우리는 seq 에게 가장 높은 숫자에서 가장 낮은 숫자의 목록을 생성하도록 요청할 수도 있습니다. 그러나 그렇게 하려면 음수 단계를 제공해야 합니다.

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

 시퀀스 24 -6 12 

소수로 계산하기

시작, 종료 및 단계 번호도 소수일 수 있습니다. 숫자 중 하나라도 소수이면 나머지 숫자도 소수로 처리됩니다. 다음 명령은 0.2 단계의 숫자 목록을 생성합니다.

 시퀀스 1 0.2 2 

시퀀스의 속도

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

광고

프로세스가 완료되는 데 걸리는 시간을 확인하기 위해 time 명령을 사용하여 다음을 입력합니다.

 시간 순서 250000 

결과는 목록 아래에 표시됩니다. 중간 정도의 전력을 공급받는 테스트 PC에서도 seq 는 놀라울 정도로 빠릅니다.

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

이렇게 하려면 다음을 입력합니다.

 시간 순차 250000 > 숫자.txt 

목록을 완성하고 파일을 만드는 데 걸리는 시간은 이제 약 1/7초입니다.

구분 기호 사용

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

광고

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

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

 시퀀스, 6 6 36

이 명령은 구분 기호로 콜론( : )을 사용합니다.

 순번 -s: 6 6 36

이 명령은 seq 에 두 개의 하이픈( - )을 구분 기호로 사용하도록 지시합니다.

 순번 -s-- 6 6 36 

형식 문자열 사용

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

다음 명령은 0을 사용하여 출력을 두 문자로 채우도록 seq 에 지시합니다.

 seq -f "%02g" 6 

광고

다음과 같이 원하는 텍스트로 문자열의 형식을 지정하고 문자열의 아무 곳에나 숫자를 배치할 수 있습니다.

 seq -f "C와 같은 형식 문자열의 숫자 %02g" 6 

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

제로 패딩을 설정하는 가장 빠른 방법은 -w (동일 너비) 옵션을 사용하는 것입니다. 이것은 seq 가 0을 사용하여 숫자를 채우도록 지시하므로 가장 큰 숫자와 너비가 모두 동일합니다.

다음 명령은 0에서 1,000까지 100단계로 계산하고 모든 숫자는 0으로 채워집니다.

 순차 -w 0 100 1000 

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

BC로 배관 시퀀스

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

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

 순차 -s* 6
광고

해당 목록을 bc 에 입력하면 별표( * )를 곱셈 기호로 사용하여 목록을 평가합니다.

 순차 -s* 6 | 기원전

다른 기호로도 이 작업을 수행할 수 있습니다. 아래 명령은 더하기 기호( + )를 사용하여 모든 숫자가 추가된 목록을 만듭니다.

 순차 -s+ 5

이를 bc 로 파이프하고 목록을 평가하기 위해 다음을 입력합니다.

 순차 -s+ 5 | 기원전 

seq로 파일 생성하기

touch 명령은 파일의 시간 및 날짜 스탬프를 업데이트합니다. 파일이 없으면 터치하여 만듭니다. touchseq 와 함께 명령줄 확장을 사용하여 주제별로 이름이 지정되었지만 번호가 다른 파일 모음을 만들 수 있습니다.

동일한 기본 이름과 다른 번호(file-1.txt, file-2.txt 등)를 가진 10개의 파일 세트를 생성합니다. 다음을 입력합니다.

 터치 $(seq -f "파일-%g.txt" 1 10)

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

 ls 파일* 

Bash 루프에서 seq 사용

Bash 스크립트에서 seq 를 사용하여 소수가 있는 루프를 제어할 수 있습니다.

광고

다음 텍스트를 편집기에 입력하고 "loops.sh"로 저장합니다.

 #!/bin/bash

  $(seq 5 0.2 6.6)의 val에 대해; 하다

  echo "현재 값은 $val입니다."

완료

다음으로 새 스크립트를 실행 가능하게 만들기 위해 다음을 입력합니다.

 chmod +x 루프.sh 

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

 ./loop.sh 

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

멋지고 단순한

seq 에 대한 한 가지는 학습 곡선이 많지 않다는 것입니다. 그것은 상쾌하게 짧은 man 페이지를 가지고 있지만 여전히 흥미로운 방식으로 사용할 수 있습니다.

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

관련: 개발자 및 열광자를 위한 최고의 Linux 노트북