Unix / Linux - 파이프와 필터
안녕하세요, 미래의 Unix/Linux 마법사 여러분! 오늘 우리는 파이프와 필터의 세상으로 흥미로운 여정을 떠납니다. 프로그래밍에 처음이라면 걱정 마세요 - 저는 여러분을 단계별로 안내해 드릴 것입니다. 수년 동안 많은 학생들을 가르친 경험을 바탕으로 말이죠. 시작해 볼까요!
파이프와 필터는 무엇인가요?
자세한 내용에 들어가기 전에 파이프와 필터가 무엇인지 이해해 보겠습니다. 상상해 보세요, 요리를 하고 있는 주방에서. 맛있는 요리를 준비하면서 다양한 주전자들이 각기 특정한 임무를 수행합니다 - 칼로 자르기, 블렌더로 섞기, 거르개로 거르기 등. 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는 무엇인가요?
pg
와 more
는 페이지 나누기 프로그램입니다. 데이터를 한 번에 다 보여주지 않고, 한 페이지씩 서빙해 주는 정중한 왈 와이터처럼 행동합니다.
기본 사용법
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
이 명령어는 두 가지 작업을 수행합니다:
-
grep 'Sales' employees.txt
는 'Sales'를 포함한 모든 줄을 찾습니다 - 그 출력은
sort -k3 -nr
로 전달되어, 3번째 필드(salary)를 기준으로 역순으로 정렬합니다.
결과는 다음과 같습니다:
David,Sales,55000
Alice,Sales,50000
이게 아닌가요? 우리는 데이터를 필터링하고 정렬하는 것을 한 번에 했습니다!
결론
이제 여러분은 파이프와 필터의 세상을 여행했고, 강력한 grep
, 질서로운 sort
, 그리고 인내심 있는 more
와 pg
를 만났습니다. 연습이 완벽을 만듭니다. 이 명령어들을 다양한 방법으로 결합해 보세요, 그러면 곧 Unix/Linux 파이프 마스터가 될 것입니다!
기쁜 코딩을 기원하며, 여러분의 파이프는 항상 막히지 않고, 필터는 항상 깨끗하길 바랍니다!
Credits: Image by storyset