0Pricing
DevOps Bootcamp · 강의

정규 표현식과 sed/awk 결합

정규 표현식을 'sed' 및 'awk' 명령어에 결합해 고급 텍스트 필터링, 치환 및 데이터 추출을 수행합니다.

정규 표현식과 sed/awk 결합은(는) CoddyKit의 무료 DevOps Bootcamp 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 DevOps Bootcamp 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.

sed와 awk에서의 정규 표현식

정규 표현식에 대한 마지막 레슨에 오신 것을 환영합니다! 지금까지 패턴 일치에 정규 표현식이 지닌 강력한 기능을 배웠습니다.

이제 그 기능을 두 가지 필수 Linux 도구인 sed(스트림 편집기)와 awk(패턴 검색 및 처리 언어)에 결합해 보겠습니다. 이렇게 통합하면 매우 고급 수준의 텍스트 필터링, 치환, 데이터 추출이 가능합니다.

sed: 정규 표현식으로 필터링하기

sed는 정규 표현식을 사용하여 줄을 필터링할 수 있습니다. /pattern/ 주소를 사용하면 지정한 정규 표현식과 일치하는 줄에만 sed가 명령을 적용합니다.

-n 옵션은 기본 출력을 억제하고, p는 일치하는 줄을 명시적으로 출력합니다.

echo -e "apple
banana
orange" | sed -n '/an/p'

sed: 정규 표현식으로 치환하기

sed의 s/regex/replacement/ 명령은 텍스트 변환에서 정규 표현식의 진가가 드러나는 부분입니다. 정규 표현식으로 찾은 패턴을 새 텍스트로 바꿀 수 있습니다.

g 플래그는 한 줄의 모든 일치 항목을 치환하고, i는 대소문자를 구분하지 않고 일치하도록 합니다.

echo "Hello world, hello universe" | sed 's/hello/hi/gi'

sed: 캡처 그룹과 역참조

정규 표현식을 사용하면 괄호 ()로 캡처 그룹을 정의할 수 있습니다. 그런 다음 \1, \2 등과 같은 역참조를 치환 문자열에 사용하여 이러한 그룹과 일치한 텍스트를 참조할 수 있습니다.

확장 정규 표현식 문법을 사용하려면 sed와 함께 -E를 사용하세요. 예를 들어 ()를 이스케이프하지 않고 사용할 수 있습니다.

echo "Doe, John" | sed -E 's/([A-Za-z]+), ([A-Za-z]+)/\2 \1/'

awk: 정규 표현식으로 레코드 필터링하기

awk는 작업을 수행하기 전에 정규 표현식 패턴을 사용하여 레코드(줄)를 선택합니다. 작업 블록 {...} 앞에 패턴을 지정하면 해당 작업은 패턴과 일치하는 줄에 대해서만 실행됩니다.

이는 grep과 비슷하지만 더 복잡한 처리가 가능합니다.

echo -e "Line 1: apple
Line 2: banana
Line 3: orange" | awk '/banana/'

awk: 특정 필드에 정규 표현식 적용하기

awk에서는 ~(일치함) 및 !~(일치하지 않음) 연산자를 사용하여 특정 필드에 정규 표현식 패턴을 적용할 수 있습니다. 구조화된 데이터를 처리할 때 매우 강력합니다.

예를 들어 $1 ~ /pattern/은 첫 번째 필드가 정규 표현식과 일치하는지 확인합니다.

echo "Name: John, Age: 30
Name: Jane, Age: 25" | awk '$1 ~ /Name/ {print $2}'

awk: 일치 항목 추출하기 (match, substr)

awk는 일치 항목의 위치와 길이를 찾는 match(string, regex)와 일치한 내용을 추출하는 substr(string, start, length) 같은 함수를 제공합니다.

match()를 실행한 후에는 RSTART에 시작 위치가 저장되고 RLENGTH에 일치 항목의 길이가 저장됩니다.

echo "ItemCode: ABC123 Price: 45.67" | awk '{match($0, /[0-9]+\.[0-9]+/); print substr($0, RSTART, RLENGTH)}'

awk: 제자리 치환 (sub, gsub)

awk에는 치환을 위한 내장 함수도 있습니다. sub(regex, replacement, target)는 첫 번째 일치 항목에 사용하고, gsub(regex, replacement, target)는 모든 일치 항목에 사용합니다.

target을 생략하면 $0(전체 레코드)이 사용됩니다. $1과 같이 필드를 지정할 수도 있습니다.

echo "apple,banana,orange" | awk '{gsub(/a/, "X", $0); print}'

sed와 awk 중 선택하기

sed와 awk는 모두 정규 표현식을 사용하여 치환과 필터링을 수행할 수 있지만, 각각 뛰어난 영역이 다릅니다.

  • sed는 일반적으로 간단한 줄 단위 변환과 치환에 더 적합합니다. 스트림 편집기입니다.
  • awk는 구조화된 데이터(필드)를 처리하고, 계산을 수행하며, 더 복잡한 논리나 여러 줄 패턴을 다루는 데 더 강력합니다. 그 자체로 프로그래밍 언어입니다.

매우 복잡한 작업을 위해 파이프 |로 두 도구를 연결할 수도 있습니다.

도전 과제: 추출 및 변환

다음 텍스트 줄을 살펴보세요.

Order#12345: ProductX - Price $19.99

가격(예: '19.99')을 올바르게 추출한 다음 통화 기호를 'EUR'로 바꾸는 명령은 무엇일까요?

요약: sed와 awk에서의 정규 표현식

sed와 awk를 정규 표현식과 결합하여 사용하는 방법을 익히셨습니다!

  • sed는 정규 표현식을 사용한 강력한 패턴 일치와 치환을 통해 줄 단위로 텍스트를 필터링하고 바꾸는 데 뛰어납니다.
  • awk는 보다 프로그래밍 방식으로 접근하여 정규 표현식으로 레코드를 필터링하고, 특정 필드 안에서 일치 항목을 찾으며, match(), substr(), sub(), gsub() 같은 함수로 데이터를 추출하거나 수정할 수 있게 합니다.

이 기술은 Linux에서 고급 텍스트 처리와 스크립팅을 수행하는 데 매우 중요합니다.

자주 묻는 질문

“정규 표현식과 sed/awk 결합” 강의는 무료인가요?

네 — “정규 표현식과 sed/awk 결합” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 DevOps Bootcamp 강의 전체를 잠금 해제할 수 있습니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.

“정규 표현식과 sed/awk 결합”에서 뭘 배우나요?

정규 표현식을 'sed' 및 'awk' 명령어에 결합해 고급 텍스트 필터링, 치환 및 데이터 추출을 수행합니다. 브라우저에서 직접 실행하는 실습 코드로 DevOps Bootcamp을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

DevOps Bootcamp을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 DevOps Bootcamp은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“정규 표현식과 sed/awk 결합” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 DevOps Bootcamp 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 DevOps Bootcamp 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 정규 표현식(Regex) 입문
  2. 정규 표현식을 활용한 고급 Grep
  3. 정규 표현식과 sed/awk 결합
  4. 캡처 그룹, 역참조 및 치환
← DevOps Bootcamp(으)로 돌아가기