Linux 환경에서 rev
명령어는 텍스트 문자열의 순서를 반전시키는 역할을 합니다. 이 명령어는 텍스트 입력이나 파일로부터 데이터를 받아 처리할 수 있으며, 사용법이 매우 간단합니다. 하지만, 다른 명령어들과 조합하여 사용할 때 그 진정한 효용이 드러납니다.
rev
명령어는 얼핏 보기에 단순해 보이는 Linux 유틸리티 중 하나입니다. 이 명령어의 주된 기능은 문자열을 역순으로 바꾸는 것입니다. 간단한 도움말 페이지(-h 옵션)를 출력하거나 버전 정보를 표시(-V 옵션)하는 기능 외에는 다른 명령어 옵션은 거의 없습니다.
그렇다면 rev
명령어는 단순히 문자열을 뒤집는 기능만 제공하는 것일까요? 다른 변형이나 추가 옵션은 없는 걸까요? 네, 그리고 아니요. 변형은 없지만, 단순한 문자열 뒤집기 그 이상을 할 수 있습니다. 이 글에서는 rev
명령어를 어떻게 강력하게 활용할 수 있는지 보여드리겠습니다.
더욱 복잡한 명령어 조합에서 rev
는 마치 레고 블록처럼 유용하게 사용될 수 있습니다. rev
는 tac
이나 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
로 전달되어 문자열을 원래 순서로 되돌립니다.
반전된 문자열의 첫 번째 문자를 잘라냈기 때문에, 결과적으로 원래 문자열의 마지막 문자를 잘라낸 효과를 얻게 됩니다. 물론, sed
나 awk
를 사용하여 동일한 작업을 할 수 있지만, 이 방법이 더 간결한 구문을 제공합니다.
문장의 마지막 단어 분리하기
비슷한 방법을 사용하여 한 줄에서 마지막 단어를 추출할 수 있습니다.
이 명령어는 이전 예제와 비슷하게 rev
를 두 번 사용합니다. 차이점은 cut
명령어가 텍스트의 특정 부분을 선택하는 방식에 있습니다.
echo 'Separate the last word' | rev | cut -d' ' -f1 | rev
다음은 명령어의 작동 분석입니다.
echo
명령어는 문자열을 rev
의 첫 번째 호출로 보냅니다.rev
는 문자열을 뒤집고 cut
명령어로 파이프합니다.cut
명령어의 -d' '
(구분자) 옵션은 공백을 기준으로 구분된 문자열 부분을 반환하도록 지시합니다.-f1
옵션은 구분자를 기준으로 나누어진 문자열의 첫 번째 섹션을 반환하도록 합니다. 즉, 문장에서 첫 번째 공백까지의 부분이 선택됩니다.
반전된 첫 번째 단어는 다시 rev
명령어로 전달되어 원래 순서로 돌아옵니다.
반전된 문자열에서 첫 번째 단어를 추출했기 때문에, 결국 원래 문자열의 마지막 단어를 추출하는 결과를 얻습니다. 문장의 마지막 단어인 “word”가 출력된 것을 확인할 수 있습니다.
파일 내용에서 특정 부분 잘라내기
파일 이름 목록이 포함된 파일이 있고, 각 파일 이름이 따옴표로 묶여 있다고 가정해 봅시다. 이 파일 이름에서 따옴표를 제거하고 싶을 때 어떻게 할 수 있을까요?
먼저 파일 내용을 확인해 보겠습니다.
less filelist.txt
파일 내용이 다음과 같이 표시됩니다.
다음 명령어를 사용하여 각 줄의 양쪽 끝에 있는 구두점을 제거할 수 있습니다. 이 명령어는 rev
와 cut
명령어를 각각 두 번 사용합니다.
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
명령어를 여러분의 명령어 레퍼토리에 추가하면, 복잡한 명령어 시퀀스를 간소화하는 데 곧 유용하게 사용할 수 있을 것입니다.