[Linux] Shell 문법

Ja L·2023년 12월 14일
0

[OS] Linux

목록 보기
6/7

DB 엔지니어 업무를 하다보면 업무 자동화를 위해 shellscript를 작성해야할 일이 종종 있습니다. Shell Script 문법에 관하여 알기 쉽게 정리를 해보려고 합니다.

Shell 문법

sed

'sed'는 스트림 편집기로, 주로 텍스트 스트림의 편집을 위해 사용되는 명령줄 도구입니다. 이름은 "Stream Editor"의 줄임말입니다. 'sed'는 텍스트의 변환, 치환, 삭제, 추가 등 다양한 작업을 수행할 수 있습니다.

'sed' 명령어의 기본 구조는 다음과 같습니다.

sed OPTIONS 'COMMAND' FILE

여기서:

  • OPTIONS: sed 명령어에 적용되는 옵션들입니다.
  • 'COMMAND': sed에서 수행할 명령들을 지정합니다. 여러 개의 명령이 있다면 세미콜론(;)으로 구분합니다.
  • FILE: sed에게 적용할 파일의 이름이나 스트림입니다.

일반적으로 사용되는 'sed' 명령어의 기능들:
1. Substittution('s'): 특정 패턴을 다른 패턴으로 대체합니다.

echo "Hello World" | sed 's/Hello/Hi/'

출력:

Hi World

위 명령어는 "Hello"를 "Hi"로 대체하여 출력합니다.

  1. Deletion('d'): 특정 패턴이 포함된 라인을 삭제합니다.
echo -e "apple\nbanana\norange" | sed '/banana/d'

출력:

apple
orange

'banana'가 포함된 라인이 삭제되었습니다.

  1. Print('p'): 특정 패턴이 포함된 라인을 출력합니다.
echo -e "apple\nbanana\norange" | sed -n '/banana/p'

출력:

banana

"banana"이 포함된 라인만 출력됩니다.

  1. Insert('i'): 특정 패턴 위에 새로운 텍스트를 삽입합니다.
echo -e "apple\norange" | sed '/apple/i banana'

출력:

banana
apple
orange

'apple' 위에 'banana'가 삽입되었습니다.

  1. Delete Leading Whitespaces (s/^[ \t]*//): 맨 앞의 공백을 제거합니다.
echo "   Hello   " | sed 's/^[ \t]*//'

출력:
Hello

's/^[ \t]*//' 패턴이 맨 앞의 모든 공백 및 탭 문자를 제거합니다.

's/^[ \t]*//' 정규표현식을 해석해보겠습니다.

  • '^': 문자열의 시작을 나타냅니다.
  • '[ \t]*': 공백 문자( ) 또는 탭 문자(\t)가 0회 이상 반복되는 것을 나타냅니다.
  • '//': 찾은 패턴을 비워 냅니다.

따라서 s/^[ \t]*//는 문자열의 시작에서부터 공백 문자나 탭 문자가 나오면 해당 부분을 모두 제거하는 것을 의미합니다.

profile
DB Engineer

0개의 댓글