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

Linux 환경에서 rev 명령어는 텍스트 문자열의 순서를 반전시키는 역할을 합니다. 이 명령어는 텍스트 입력이나 파일로부터 데이터를 받아 처리할 수 있으며, 사용법이 매우 간단합니다. 하지만, 다른 명령어들과 조합하여 사용할 때 그 진정한 효용이 드러납니다.

rev 명령어는 얼핏 보기에 단순해 보이는 Linux 유틸리티 중 하나입니다. 이 명령어의 주된 기능은 문자열을 역순으로 바꾸는 것입니다. 간단한 도움말 페이지(-h 옵션)를 출력하거나 버전 정보를 표시(-V 옵션)하는 기능 외에는 다른 명령어 옵션은 거의 없습니다.

그렇다면 rev 명령어는 단순히 문자열을 뒤집는 기능만 제공하는 것일까요? 다른 변형이나 추가 옵션은 없는 걸까요? 네, 그리고 아니요. 변형은 없지만, 단순한 문자열 뒤집기 그 이상을 할 수 있습니다. 이 글에서는 rev 명령어를 어떻게 강력하게 활용할 수 있는지 보여드리겠습니다.

더욱 복잡한 명령어 조합에서 rev는 마치 레고 블록처럼 유용하게 사용될 수 있습니다. revtac이나 yes와 같은 다른 명령어들을 보조하는 역할을 합니다. 다른 명령어들과 함께 사용되는 방법을 살펴보면 이 명령어의 가치를 더욱 명확히 이해할 수 있습니다.

rev 명령어의 기본적인 사용법

매개변수 없이 명령줄에서 rev를 실행하면, 입력된 모든 내용을 반전시켜 터미널 화면에 출력합니다. Ctrl+C를 눌러 종료하기 전까지 계속해서 이 작업을 수행합니다.

rev

텍스트를 입력하고 엔터 키를 누르면, rev는 해당 문자열을 역순으로 출력합니다. 이를 통해 회문을 쉽게 확인할 수 있습니다.

rev 명령어에 텍스트 전달하기

echo 명령어를 사용하여 텍스트를 rev 명령어로 파이프할 수 있습니다.

echo one two three | rev

또한, rev를 사용하여 전체 텍스트 파일의 내용을 줄 단위로 뒤집을 수도 있습니다. 다음 예에서는 파일 이름 목록이 포함된 “filelist.txt” 파일을 사용합니다.

rev filelist.txt

이 명령어는 파일의 각 행을 읽고 반전시킨 후 터미널 창에 출력합니다.

rev를 다른 명령어와 결합하여 사용하기

다음은 rev 명령어를 두 번 호출하고 파이프를 사용하는 예시입니다.

이 명령어는 텍스트 문자열에서 마지막 문자를 제거합니다. 이는 구두점을 제거하는 데 유용할 수 있습니다. 문자열을 잘라내는 데는 cut 명령어를 사용합니다.

echo 'Remove punctuation.' | rev | cut -c 2- | rev

명령어의 작동 방식을 분석해 보겠습니다.

echo 명령어는 문자열을 rev로 보냅니다.
rev는 문자열을 반전시키고 cut 명령어로 파이프합니다.
cut 명령어의 -c (문자) 옵션은 문자열에서 특정 문자 시퀀스를 반환하도록 지정합니다.
2- 옵션은 두 번째 문자부터 줄의 끝까지의 문자를 반환하도록 지정합니다. 예를 들어 2-5 옵션이 사용되면, 2번째부터 5번째 문자까지의 범위가 반환됩니다. 두 번째 숫자가 생략되면 “문자열 끝까지”를 의미합니다.
반전된 문자열 (첫 번째 문자 제외)은 다시 rev로 전달되어 문자열을 원래 순서로 되돌립니다.

반전된 문자열의 첫 번째 문자를 잘라냈기 때문에, 결과적으로 원래 문자열의 마지막 문자를 잘라낸 효과를 얻게 됩니다. 물론, sedawk를 사용하여 동일한 작업을 할 수 있지만, 이 방법이 더 간결한 구문을 제공합니다.

문장의 마지막 단어 분리하기

비슷한 방법을 사용하여 한 줄에서 마지막 단어를 추출할 수 있습니다.

이 명령어는 이전 예제와 비슷하게 rev를 두 번 사용합니다. 차이점은 cut 명령어가 텍스트의 특정 부분을 선택하는 방식에 있습니다.

echo 'Separate the last word' | rev | cut -d' ' -f1 | rev

다음은 명령어의 작동 분석입니다.

echo 명령어는 문자열을 rev의 첫 번째 호출로 보냅니다.
rev는 문자열을 뒤집고 cut 명령어로 파이프합니다.
cut 명령어의 -d' ' (구분자) 옵션은 공백을 기준으로 구분된 문자열 부분을 반환하도록 지시합니다.
-f1 옵션은 구분자를 기준으로 나누어진 문자열의 첫 번째 섹션을 반환하도록 합니다. 즉, 문장에서 첫 번째 공백까지의 부분이 선택됩니다.
반전된 첫 번째 단어는 다시 rev 명령어로 전달되어 원래 순서로 돌아옵니다.

반전된 문자열에서 첫 번째 단어를 추출했기 때문에, 결국 원래 문자열의 마지막 단어를 추출하는 결과를 얻습니다. 문장의 마지막 단어인 “word”가 출력된 것을 확인할 수 있습니다.

파일 내용에서 특정 부분 잘라내기

파일 이름 목록이 포함된 파일이 있고, 각 파일 이름이 따옴표로 묶여 있다고 가정해 봅시다. 이 파일 이름에서 따옴표를 제거하고 싶을 때 어떻게 할 수 있을까요?

먼저 파일 내용을 확인해 보겠습니다.

less filelist.txt

파일 내용이 다음과 같이 표시됩니다.

다음 명령어를 사용하여 각 줄의 양쪽 끝에 있는 구두점을 제거할 수 있습니다. 이 명령어는 revcut 명령어를 각각 두 번 사용합니다.

rev filelist.txt | cut -c 2- | rev | cut -c 2-

이제 파일 이름이 따옴표 없이 나열됩니다.

명령어를 단계별로 분석하면 다음과 같습니다.

rev 명령어는 파일의 각 줄을 뒤집고 cut 명령어로 파이프합니다.
cut 명령어의 -c (문자) 옵션은 각 줄에서 문자 시퀀스를 반환하도록 지시합니다.
2- 옵션은 각 행에서 두 번째 문자부터 끝까지의 범위를 반환하도록 지정합니다.
첫 번째 문자를 제외한 뒤집힌 문자열이 rev 명령어로 다시 전달됩니다.
rev 명령어는 문자열을 다시 반전시켜 원래 순서로 되돌립니다. 결과 문자열은 두 번째 cut 명령어로 파이프됩니다.
두 번째 cut 명령어의 -c (문자) 옵션은 각 문자열에서 문자 시퀀스를 반환하도록 지시합니다.
2- 옵션은 각 줄에서 두 번째 문자부터 끝까지의 범위를 반환하도록 합니다. 이렇게 하면 각 줄의 첫 번째 문자, 즉 선행 따옴표를 “건너뛰게” 됩니다.

여러 명령 파이프라인 사용하기

다음은 현재 디렉토리의 모든 파일 확장자를 정렬된 목록으로 반환하는 명령어입니다. 이 명령어는 총 5개의 Linux 명령어를 조합하여 사용합니다.

ls | rev | cut -d'.' -f1 | rev | sort | uniq

명령어의 작동 방식은 다음과 같습니다.

ls 명령어는 현재 디렉토리의 파일 목록을 출력합니다. 이 목록은 rev 명령어로 파이프됩니다.
rev 명령어는 파일 이름을 뒤집고 cut 명령어로 파이프합니다.
cut 명령어는 각 파일 이름에서 구분자까지의 첫 번째 부분을 반환합니다. -d'.' 옵션은 cut에게 마침표(.)를 구분자로 사용하도록 지시합니다. 첫 번째 마침표까지의 반전된 파일 이름 부분은 파일 확장자입니다. 이 확장자들은 rev 명령어로 파이프됩니다.
rev 명령어는 파일 확장자를 원래 순서로 되돌립니다. 이 확장자들은 sort 명령어로 파이프됩니다.
sort 명령어는 파일 확장자를 정렬하고 그 결과를 uniq 명령어로 파이프합니다.
uniq 명령어는 고유한 파일 확장자 유형을 목록으로 반환합니다. 파일 확장자가 없는 경우 (예: makefile, 디렉토리 Help 및 gc_help), 전체 파일 이름이 나열됩니다.

결과를 개선하기 위해, uniq 명령어에 -c (count) 명령줄 옵션을 추가할 수 있습니다.

ls | rev | cut -d'.' -f1 | rev | sort | uniq -c

이제 현재 디렉토리에 있는 다양한 파일 유형의 정렬된 목록과 각 유형의 개수를 확인할 수 있습니다.

이것은 꽤 유용한 한 줄 명령어입니다!

앞으로 나아가기 위해 뒤로 돌아가기

때로는 앞으로 나아가기 위해 뒤로 돌아가야 할 때도 있습니다. 그리고 일반적으로 팀의 일원으로서 함께할 때 가장 빠르게 앞으로 나아갈 수 있습니다.

rev 명령어를 여러분의 명령어 레퍼토리에 추가하면, 복잡한 명령어 시퀀스를 간소화하는 데 곧 유용하게 사용할 수 있을 것입니다.