Unix / Linux - 파이프와 필터

안녕하세요, 미래의 Unix/Linux 마법사 여러분! 오늘 우리는 파이프와 필터의 세상으로 흥미로운 여정을 떠납니다. 프로그래밍에 처음이라면 걱정 마세요 - 저는 여러분을 단계별로 안내해 드릴 것입니다. 수년 동안 많은 학생들을 가르친 경험을 바탕으로 말이죠. 시작해 볼까요!

Unix / Linux - Pipes & Filters

파이프와 필터는 무엇인가요?

자세한 내용에 들어가기 전에 파이프와 필터가 무엇인지 이해해 보겠습니다. 상상해 보세요, 요리를 하고 있는 주방에서. 맛있는 요리를 준비하면서 다양한 주전자들이 각기 특정한 임무를 수행합니다 - 칼로 자르기, 블렌더로 섞기, 거르개로 거르기 등. Unix/Linux에서 파이프와 필터는 이와 비슷하게 작동합니다.

  • 필터는 입력을 받아 처리한 후 출력을 생성하는 명령어입니다.
  • 파이프는 이 필터들을 연결하는 '배관'으로, 데이터가 하나의 명령어에서 다른 명령어로 흐르게 합니다.

함께 하면, 데이터를 처리하고 조작하는 강력한 시스템을 형성합니다. 이제 가장 일반적이고 유용한 명령어 중 몇 가지를 살펴보겠습니다.

grep 명령어

grep은 무엇인가요?

grep은 "Global Regular Expression Print"의 약자로, 텍스트에서 특정 패턴을 찾는 초고강력한 검색 도구입니다.

기본 사용법

기본 문법은 다음과 같습니다:

grep [옵션] 패턴 [파일...]

간단한 예제를 시작해 보겠습니다. fruits.txt라는 파일이 다음과 같은 내용을 가지고 있다고 가정해 봅시다:

apple
banana
cherry
date
elderberry
fig
grape

이제 'a' 문자를 포함한 모든 과일을 찾고 싶다면 다음과 같이 사용할 수 있습니다:

grep 'a' fruits.txt

출력은 다음과 같습니다:

apple
banana
grape

유용한 옵션

다음은 grep의 몇 가지 유용한 옵션입니다:

옵션 설명
-i 대소문자 무시
-v 일치하지 않는 줄 표시
-n 줄 번호 표시
-c 일치하는 줄 수 계산

이제 몇 가지를 시도해 보겠습니다:

grep -i 'A' fruits.txt  # 'a' 또는 'A'를 찾습니다
grep -v 'a' fruits.txt  # 'a'가 없는 줄 찾기
grep -n 'e' fruits.txt  # 'e'가 포함된 줄의 번호 표시
grep -c 'r' fruits.txt  # 'r'을 포함한 줄 수 계산

sort 명령어

sort는 무엇인가요?

sort은 당신이 기대할 수 있는 것처럼 정렬합니다 - 데이터를 알파벳 순이나 숫자 순으로 정렬합니다. 요리사의 도움을 받아 빠르게 데이터를 정렬할 수 있는 것입니다.

기본 사용법

기본 문법은 다음과 같습니다:

sort [옵션] [파일...]

우리의 fruits.txt 파일을 사용해 보겠습니다:

sort fruits.txt

출력은 다음과 같습니다:

apple
banana
cherry
date
elderberry
fig
grape

유용한 옵션

다음은 sort의 몇 가지 일반적인 옵션입니다:

옵션 설명
-r 역순 정렬
-n 숫자로 정렬
-u 중복 제거
-k 특정 필드로 정렬

이제 이 옵션들을 시도해 보겠습니다:

sort -r fruits.txt  # 역 알파벳 순 정렬

이제 numbers.txt 파일을 만들어 몇 가지 숫자를 넣어 보겠습니다:

5
2
8
1
3

이를 숫자 순으로 정렬할 수 있습니다:

sort -n numbers.txt

pg와 more 명령어

pg와 more는 무엇인가요?

pgmore는 페이지 나누기 프로그램입니다. 데이터를 한 번에 다 보여주지 않고, 한 페이지씩 서빙해 주는 정중한 왈 와이터처럼 행동합니다.

기본 사용법

more의 경우:

more [옵션] [파일...]

pg의 경우:

pg [옵션] [파일...]

more를 더 긴 파일과 함께 사용해 보겠습니다. long_text.txt 파일을 만들어 이 튜토리얼의 내용을 넣어 보겠습니다:

more long_text.txt

이 명령어는 내용을 한 화면씩 표시합니다. 다음 페이지를 보려면 공백 키를 누르고, 나가기 위해 'q' 키를 누릅니다.

pg는 비슷하게 작동하지만 더 많은 기능을 제공합니다:

pg long_text.txt

pg의 경우, 다음과 같은 명령어를 사용할 수 있습니다: ':n'으로 다음 페이지로 이동, ':p'으로 이전 페이지로 이동, '/pattern'으로 텍스트 검색.

모든 것을 함께: 파이프의 힘

이제 흥미로운 부분 - 명령어를 파이프로 결합하는 것입니다! 파이프 기호 '|'는 하나의 명령어의 출력을 다른 명령어의 입력으로 연결합니다.

employees.txt 파일을 만들어 다음 내용을 넣어 보겠습니다:

Alice,Sales,50000
Bob,Marketing,45000
Charlie,Engineering,60000
David,Sales,55000
Eve,Marketing,48000
Frank,Engineering,62000

이제 파이프를 사용해 마법을 부릅니다:

grep 'Sales' employees.txt | sort -k3 -nr

이 명령어는 두 가지 작업을 수행합니다:

  1. grep 'Sales' employees.txt는 'Sales'를 포함한 모든 줄을 찾습니다
  2. 그 출력은 sort -k3 -nr로 전달되어, 3번째 필드(salary)를 기준으로 역순으로 정렬합니다.

결과는 다음과 같습니다:

David,Sales,55000
Alice,Sales,50000

이게 아닌가요? 우리는 데이터를 필터링하고 정렬하는 것을 한 번에 했습니다!

결론

이제 여러분은 파이프와 필터의 세상을 여행했고, 강력한 grep, 질서로운 sort, 그리고 인내심 있는 morepg를 만났습니다. 연습이 완벽을 만듭니다. 이 명령어들을 다양한 방법으로 결합해 보세요, 그러면 곧 Unix/Linux 파이프 마스터가 될 것입니다!

기쁜 코딩을 기원하며, 여러분의 파이프는 항상 막히지 않고, 필터는 항상 깨끗하길 바랍니다!

Credits: Image by storyset