리눅스 명령어 paste 사용법 및 3가지 옵션

리눅스 명령어 paste는 여러 파일의 내용을 병렬로 결합해주는 유용한 도구입니다. 주로 파일 간의 데이터를 나란히 붙여서 보기 위해 사용되며, 쉘 스크립트나 데이터 처리를 할 때 자주 활용됩니다. 이 글에서는 paste 명령어의 기본 사용법과 옵션, 그리고 실용적인 활용법까지 자세히 설명해드리겠습니다.

리눅스 명령어 paste란?

paste 명령어는 여러 파일의 각 줄을 결합하여 하나의 줄로 만들 때 사용됩니다. 파일의 각 줄을 띄어쓰기나 탭으로 구분해서 병렬로 나란히 붙여주는 역할을 하며, 단순한 데이터 병합부터 보다 복잡한 데이터 조작까지 폭넓게 활용할 수 있습니다.

paste 명령어 기본 사용법

기본 구조

paste [옵션] 파일1 파일2 ...
ShellScript

위 명령어에서 파일1과 파일2는 각각 병합할 파일들을 의미합니다. paste 명령어는 기본적으로 각 파일의 첫 번째 줄을 서로 결합하고, 두 번째 줄도 마찬가지로 병렬로 결합하는 방식으로 동작합니다. 각 줄 사이에는 기본적으로 탭(tab) 문자가 삽입됩니다.

예시. 탭문자(\t)로 구분하여 이어 붙이기

다음과 같이 file1.txt와 file2.txt가 있다고 하겠습니다.

apple,35
banana,21
cherry,82
file1.txt
red,38
yellow,43
purple,11
file2.txt

명령어 paste를 사용하여 두 개의 파일을 탭으로 구분하여 나란히 붙여 보도록 하겠습니다.

paste file1.txt file2.txt
ShellScript

위 명령어는 file1.txtfile2.txt의 첫 번째 줄을 탭으로 구분하여 나란히 붙이고, 그다음 줄도 동일한 방식으로 병합합니다. 그 결과는 아래와 같습니다

그림 1. 리눅스 명령어 paste: 두 개의 파일을 탭 구분자를 사용하여 붙이기
그림 1. 리눅스 명령어 paste: 두 개의 파일을 탭 구분자를 사용하여 붙이기

주요 옵션

paste 명령어에는 여러 가지 옵션이 있으며, 상황에 따라 원하는 방식으로 파일을 결합할 수 있습니다.

-d, –delimiters

이 옵션은 기본 탭 대신 사용자가 지정한 구분자를 사용할 수 있게 합니다. 예를 들어, 쉼표나 공백 등의 다른 구분자로 파일을 병합하고 싶다면 -d 옵션을 활용할 수 있습니다.

paste -d "," file1.txt file2.txt
ShellScript

위 명령어는 각 줄을 탭 대신 쉼표로 구분하여 아래 그림과 같이 출력합니다.

그림 2. 리눅스 명령어 paste: -d 옵션을 사용하여 구분자 지정하기
그림 2. 리눅스 명령어 paste: -d 옵션을 사용하여 구분자 지정하기

-s, –serial

이 옵션은 파일의 모든 내용을 한 줄로 병합하고 싶을 때 사용합니다. 즉, 각 파일의 모든 줄을 이어서 하나의 줄로 출력합니다.

paste -s file1.txt file2.txt
ShellScript

다음과 같이 file1.txt의 내용이 먼저 구분자로 이어진 한 줄로 변경되고, 다음 줄에는 file2.txt의 내용이 한 줄로 출력됩니다.

그림 3. 리눅스 명령어 paste: -s 옵션으로 각 파일을 한 줄로 변경하고 병합하기
그림 3. 리눅스 명령어 paste: -s 옵션으로 각 파일을 한 줄로 변경하고 병합하기

-z, –zero-terminated

paste 명령어는 기본적으로 줄 바꿈 문자(\n)로 각 줄을 구분하지만, -z 옵션을 사용하면 널 문자(\0)로 각 줄을 구분할 수 있습니다. 이 옵션은 특정 상황에서 파일 간 구분을 보다 명확하게 할 때 유용합니다.

실전 활용 방법

paste 명령어는 단순히 파일을 병합하는 데 그치지 않고, 데이터를 분석하거나 정리하는 다양한 스크립트에 유용하게 사용됩니다.

CSV 파일 병합

여러 CSV 파일을 병합하여 하나의 파일로 만들 때 paste 명령어가 매우 유용합니다. 예를 들어, 각각의 CSV 파일이 특정 컬럼 데이터를 담고 있을 때, 이를 한 번에 병합하여 새로운 CSV 파일을 만들 수 있습니다.

paste -d "," file1.csv file2.csv > merged.csv
ShellScript
그림 4. 리눅스 명령어 paste: CSV 파일 병합하기
그림 4. 리눅스 명령어 paste: CSV 파일 병합하기

파일의 특정 열만 결합하기

cut 명령어와 함께 사용하면 특정 열(column)만 추출해서 병합할 수 있습니다. 예를 들어, 두 파일에서 첫 번째 열만 따로 추출하여 병합하려면 다음과 같이 할 수 있습니다.

paste <(cut -f1 -d, file1.txt) <(cut -f1 -d, file2.txt)
ShellScript

이렇게 하면 file1.txtfile2.txt의 첫 번째 열만 결합하여 출력할 수 있습니다.

그림 5. 리눅스 명령어 paste: cut 명령어를 사용하여 특정 열만 결합하기
그림 5. 리눅스 명령어 paste: cut 명령어를 사용하여 특정 열만 결합하기

사용 시 주의사항

paste 명령어를 사용할 때 몇 가지 주의할 점이 있습니다:

  1. 파일의 줄 수가 다를 경우: 파일들의 줄 수가 다를 경우, paste 명령어는 줄 수가 적은 파일이 끝나면 빈 칸을 채우지 않고 그대로 출력합니다. 따라서 데이터 정렬이 틀어질 수 있으므로, 데이터 병합 전에 파일의 줄 수를 확인하는 것이 좋습니다.
  2. 구분자 중복: 구분자를 여러 개 사용하면, 지정한 순서대로 순환하며 사용되기 때문에, 원하는 결과가 나오지 않을 수 있습니다. 사용 전에 구분자의 개수와 파일의 줄 수를 맞추는 것이 중요합니다.
  3. 빈 파일 처리: 병합할 파일 중 하나가 비어 있을 경우, 그 파일의 위치에는 공백이 출력됩니다. 이는 의도하지 않은 출력 결과를 초래할 수 있으므로 주의해야 합니다.

정리

리눅스 명령어 paste는 파일의 데이터를 병렬로 결합할 때 매우 유용한 도구입니다. 기본적인 사용법부터 다양한 옵션을 통해 파일을 병합하고, 데이터 분석 및 처리에 활용할 수 있습니다. 특히, 여러 구분자를 사용하거나 줄을 이어서 병합하는 등 다양한 상황에서 적용할 수 있으며, 스크립트 작성 시에도 중요한 역할을 합니다. 사용 시 주의사항만 잘 지킨다면 효율적인 파일 병합 작업이 가능할 것입니다. paste 명령어를 활용해 더욱 편리하게 데이터를 처리해 보세요!

참고자료

관련 포스트

Leave a Comment