본문 바로가기
CS/Shell scripts

[오늘의 업무/Bash] Shell 문자열에서 원하는 부분만 치환/변경 하는 방법

by Warehaus 2021. 10. 7.

안녕하세요 일상창고입니다.

 

회사에서 겪은 일들을 정리하는 '오늘의 업무' 입니다.

회사 업무중에 코딩스킬이나, 다시한번 연습해서 다음에 잊고싶지 않은 내용들을 정리하고 있습니다.

 

 

쉘 스크립트 만들다 보면 원하는 문자만 바꾸고 싶은 경우가 종종 발생합니다.

뭐.. vim 으로 수정 할 수 있는 고정 문자열들이야 :%s 를 사용해서 바꾸면 되겠지만..

특정 프로그램의 output으로 나오는 문자는 동적으로 바꿔야 하는데 이럴 때 좀 고민이 되더라구요.

 

이럴 때 제가 사용하는 명령어는 'sed' 입니다.

 

아래 예시를 보면 이해하기 쉬울 것 같습니다.

 

#/bin/bash

output="test/test.sh"

echo $output

output=`echo $output | sed 's/\//_/g'`

echo $output

코드를 보면 output에는 '/' 문자열이 포함되어있고 그 밑에서는 sed 명령을 이용해서 '/' 를 '_' 로 바꾸고 있어요.

 

출력은 어느정도 예상이 가시겠죠?

 

아래 와 같이 출력이 됩니다.

 

작성 한 Shell script를 (bash) 실행하면 처음 문자열은 test/test.sh 를 출력하고, sed로 문자열을 변경한 output은 test_test.sh를 출력하게 됩니다.

 

사실 제가 업무 중에 이 명령이 필요한 상황이 오늘 있었는데요, 어떤 프로그램이 뱉는 출력을 파일명으로 쓰고싶은데 자꾸 그 문자열이 '/' 이 같이 있어서 Shell script에서 디렉토리로 읽어버리거나 파일을 제대로 쓰지 못하는 경우 였어요.

 

그래서 '/' 문자열을 다른 '_' 나 '-' 같은 문자로 바꿔서 문제를 해결했습니다.

 

사용은 간단하지만, 잘 기억해 두면 정말 사용할 곳이 너무나도 많은 'sed' 명령어

1초라도 빠른 업무처리에 도움이 되셨으면 합니다.

 

끝.