안녕하세요 일상창고입니다.
회사에서 겪은 일들을 정리하는 '오늘의 업무' 입니다.
회사 업무중에 코딩스킬이나, 다시한번 연습해서 다음에 잊고싶지 않은 내용들을 정리하고 있습니다.
쉘 스크립트 만들다 보면 원하는 문자만 바꾸고 싶은 경우가 종종 발생합니다.
뭐.. 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초라도 빠른 업무처리에 도움이 되셨으면 합니다.
끝.
'CS > Shell scripts' 카테고리의 다른 글
[bash] 리눅스 쉘 스크립트(shell script) 문자열 바꾸는 방법 (0) | 2022.08.08 |
---|---|
[쉘스크립트/csh] Linux csh 에서 파일 유무 확인하는 방법 / 일반 파일 존재 확인 / 파일 있는지 확인하는 조건 문 작성 (0) | 2022.02.14 |
[Bash] 배쉬쉘에서 파일/디렉토리 유무 확인하기 (0) | 2021.10.06 |
[bash] 스크립트 에서 signal 캐치하는 방법 (0) | 2021.08.01 |
[Bash] Bash 스크립트에서 argument로 Option 을 처리 하는 방법 (0) | 2021.07.08 |