오늘 이런저런 출력들을 편집(?) 하다가 새로운 방법을 찾아서 정리한다..
상황은 다음과 같았다.
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를 만들어야 할 때가 있다.
문자 바꿀 때 아주 애용할 수 있을법한 기능이라 잘 기억해 놔야겠다는 생각이 든다.
'CS' 카테고리의 다른 글
문서 지향 데이터베이스(Document oriented database) 란 무엇인가? feat. CouchDB (0) | 2022.07.07 |
---|---|
제조회사 개발자의 신세한탄 그리고 살아남기위한 발버둥 1 - 부서배치 (0) | 2022.04.24 |
리눅스 권한 유형 - setuid, setgid 그리고 sticky bit 의 개념 그리고 파일권한 대/소문자 s 의 의미 (0) | 2022.04.10 |
Use case 의 종류 3가지 ( Brief, Casual, Fully dressed ) (0) | 2022.04.06 |
[디자인패턴] Singleton pattern (싱글톤 패턴) 의 Java 코드구현 예시 - 단일 스레드 환경 (0) | 2022.04.05 |