본문 바로가기
CS

[쉬운 쉘 스크립트] bash shell 에서 원하는 문자 변경하는 방법

by Warehaus 2022. 4. 17.

 

오늘 이런저런 출력들을 편집(?) 하다가 새로운 방법을 찾아서 정리한다..

상황은 다음과 같았다.

 

output 에 port address 와 hostname 이 다음과 같이 출력되고 있었다.

 

$ cat spec.out
12345 host1
12344 host2

 

이 상태에서 내가 필요했 던 결과는 port@hostname 형식의 정보였다.

 

뭐.. 파일 자체를 바꿔도 됐겠지만. .

그냥 출력을 for 문에서 바로 바꾸고 싶었다.

 

일단 for 로 출력해보니 이렇게 나온다.

 

$ for i in `cat spec.out`
> do
> echo $i
> done
12345
host1
12344
host2

 

port 와 hostname 이 space로 구분되어 있다 보니 for 문에서 각 항목이 다른 iteration에서 출력된다.

다시한번 말하자면 나는 하나의 iteration 에서 port@hostname이 필요했다.

 

이럴 때 다음과 같이도 사용할 수 있다.

 

$ data=`cat spec.out`
$ echo ${data// /@}
12345@host1 12344@host2

 

이제 이 결과를 가지고 for 문을 돌려보자

 

$ for i in ${data// /@}; do echo $i; done
12345@host1
12344@host2

 

원하는 결과를 얻을 수 있었다.

 

사실 이런 것들이 잘 생각이 안나서 python script로 작성하게 되는 경향이 있는데

시스템을 사용하다 보면 어쩔 수 없이 shell script를 만들어야 할 때가 있다.

 

문자 바꿀 때 아주 애용할 수 있을법한 기능이라 잘 기억해 놔야겠다는 생각이 든다.

 

출처 : https://stackoverflow.com/questions/2871181/replacing-some-characters-in-a-string-with-another-character