본문 바로가기
CS/Shell scripts

[bash] 리눅스 쉘 스크립트(shell script) 문자열 바꾸는 방법

by Warehaus 2022. 8. 8.

 

 

오늘은 script(bash) 에서 문자열을 치환

즉, 문자열을 원하는 문자열로 바꾸는 방법을 알아보려고 한다.

 

자주 사용하는 방법인데

이상하게 자꾸만 까먹는다...

 

아마 예전에 포스팅 한 내용이 있을지도 모르겠지만

그래도 한번 더 연습삼아 내용을 정리해 본다.

 

 

 

Shell Parameter Expansion 활용 


 

우선, 가장 쉬운 방법은 echo 를 활용하는 방법이다.

shell script 에 변수를 선언하고 echo 출력 시 아래 패턴을 이용하여 문자열 변경이 가능하다.

 

${parameter/pattern/string}

 

 

아래처럼 예제 스크립트를 한번 작성해 보았다.

 

#!/bin/bash

output="Hello my world"
name="Kim"

echo "${output/my/"$name"}"

 

기대하는 결과는 my 라는 단어를 Kim으로 바꾸는 것 이다.

 

실행결과는 다음과 같다.

 

$ ./bash_str_replace.sh 
Hello "Kim" world

 

잘 변경되는 것을 볼 수 있다.

 

 

sed 활용


 

이 외에도 다른 방법이 있다면,  sed 명령어를 이용하는 방법이다.

앞에서 사용한 방법 보다는 조금 번거롭지만, 그래도 많이 사용하고 있다.

 

많이 사용하고 있다는 말이 무색하게 항상 검색하고 있는 현실이 안타깝다.

 

sed는 다음과 같이 사용 가능하다.

 

output=$(echo "I'm testing" | sed "s/testing/running/" )
echo $output

 

출력은 다음과 같다.

 

I'm running

 

sed 명령은 파일 내용을 바꿔서 출력하는데도 활용이 되는데,

자세한 사항은 아래 레퍼런스가 도움이 될 것 같아서 가져와 봤다.

 

https://www.ibm.com/docs/en/aix/7.1?topic=s-sed-command 

 

sed Command

Purpose A stream editor. Syntax sed [ -n ] [ -u ] Script  [ File ... ] sed [ -n ] [ -u ] [ -e Script ] ... [ -f ScriptFile ] ...  [ File ... ] Description The sed command modifies lines from the specified File parameter according to an edit s

www.ibm.com

 

 

코딩을 하다보면 stl이나 각종 표준함수들 외워서 사용하는 사람들을 볼 때마다

참 대단하다는 생각이 든다.

 

내 기억력의 한계가 너무 아쉽고

조금 더 레벨업 하려면 어떻게 해야하나 싶다..

 

그래도 몇 년을 컴퓨터만 붙잡고 살아왔는데

회사 업무를 하다보니 개발 보다는 그냥 일 자체를 하게 되는 경우도 많아서 그런가

학습이 좀 더뎌진다는 느낌을 받는다..

 

이런 부분은 집중력과 꾸준함으로 극복해 나갈 수 밖에 없지않나 생각한다.