고급 텍스트 조작(sed, awk)
스트림 편집에 사용하는 'sed'와 강력한 텍스트 처리, 패턴 검색 및 데이터 추출에 사용하는 'awk'를 알아봅니다.
고급 텍스트 조작(sed, awk)은(는) CoddyKit의 무료 Linux Command Line & Bash Scripting Mastery 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Linux Command Line & Bash Scripting Mastery 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Linux Command Line & Bash Scripting Mastery 강의에는 총 4개의 강의가 포함되어 있습니다.
sed로 스트림 편집하기
sed는 "스트림 편집기"를 줄인 말로, 텍스트를 구문 분석하고 변환하는 강력한 명령줄 도구입니다. 텍스트 스트림을 한 줄씩 처리합니다. 대화형이 아닌 텍스트 편집기라고 생각하면 됩니다.
sed는 한 줄을 읽고, 치환이나 삭제와 같은 명령을 적용한 뒤 결과를 출력하고 다음 줄로 이동합니다. 따라서 대용량 파일이나 파이프로 전달된 데이터를 매우 효율적으로 처리할 수 있습니다.
간단한 텍스트 치환
sed의 가장 일반적인 용도는 텍스트를 치환하는 것입니다. s 명령 뒤에 구분 기호(대개 /), 찾을 패턴, 또 다른 구분 기호, 대체할 텍스트, 마지막 구분 기호를 차례로 지정합니다.
구문: sed 's/pattern/replacement/' filename
샘플 파일에서 "apple"을 "orange"로 바꿔 보세요.
#!/bin/bash
# Create a sample file
echo "I like red apple." > fruits.txt
echo "My favorite fruit is apple." >> fruits.txt
echo "Another apple here." >> fruits.txt
echo "Original content:"
cat fruits.txt
echo ""
echo "---"
echo "Running sed command:"
sed 's/apple/orange/' fruits.txt
# Clean up
rm fruits.txt전역 및 대소문자 구분 없음
기본적으로 sed는 각 줄에서 패턴이 처음으로 나타나는 항목만 한 번 바꿉니다. 한 줄에 나타나는 항목을 모두 바꾸려면 g(전역) 플래그를 사용합니다.
대소문자를 구분하지 않고 검색하려면 i 플래그를 사용합니다. gi처럼 플래그를 결합할 수도 있습니다.
예: "apple"을 대소문자 구분 없이 모두 "banana"로 바꿉니다.
#!/bin/bash
# Create a sample file
echo "Apple is good." > fruits.txt
echo "I eat an apple and another Apple." >> fruits.txt
echo "Apples are tasty." >> fruits.txt
echo "Original content:"
cat fruits.txt
echo ""
echo "---"
echo "Running sed command (s/apple/banana/gi):"
sed 's/apple/banana/gi' fruits.txt
# Clean up
rm fruits.txtsed로 줄 삭제하기
특정 패턴과 일치하는 전체 줄을 삭제할 때도 sed를 사용할 수 있습니다. 이때는 d 명령을 사용합니다.
구문: sed '/pattern/d' filename
이는 "DEBUG"가 포함된 로그 항목이나 빈 줄처럼 원하지 않는 줄을 제거할 때 유용합니다.
"error"가 포함된 줄을 삭제해 보겠습니다.
#!/bin/bash
# Create a sample file
echo "INFO: User logged in." > log.txt
echo "WARNING: Disk space low." >> log.txt
echo "ERROR: File not found." >> log.txt
echo "INFO: Operation complete." >> log.txt
echo "ERROR: Permission denied." >> log.txt
echo "Original content:"
cat log.txt
echo ""
echo "---"
echo "Running sed command (/error/d):"
sed '/error/d' log.txt
# Clean up
rm log.txtawk: 패턴 검색 언어
awk는 데이터 추출과 보고서 작성에 자주 사용되는 또 다른 강력한 텍스트 처리 도구입니다. sed가 스트림 편집기라면 awk는 텍스트 처리를 위해 설계된 프로그래밍 언어에 더 가깝습니다.
awk는 sed와 마찬가지로 텍스트 파일을 한 줄씩 처리합니다. 하지만 각 줄을 "레코드"로 취급하고, 구분자를 기준으로 레코드를 "필드"(열)로 나눕니다.
기본적으로 awk는 공백 문자(스페이스, 탭)를 필드 구분자로 사용합니다.
데이터 필드에 접근하기
awk에서 필드는 $1, $2, $3 등으로 나타냅니다. $0은 전체 줄을 나타냅니다.
중괄호 {} 안에서 print 명령을 사용하면 특정 필드를 출력할 수 있습니다. 구문은 다음과 같습니다: awk '{ print $FIELD_NUMBER }' filename
간단한 데이터 파일에서 첫 번째 필드와 세 번째 필드를 출력해 보겠습니다.
#!/bin/bash
# Create a sample file
echo "Name Age City" > data.txt
echo "Alice 30 NewYork" >> data.txt
echo "Bob 24 London" >> data.txt
echo "Charlie 35 Paris" >> data.txt
echo "Original content:"
cat data.txt
echo ""
echo "---"
echo "Running awk command (print $1, $3):"
awk '{print $1, $3}' data.txt
# Clean up
rm data.txtawk로 줄 필터링하기
sed와 마찬가지로 awk도 패턴을 기준으로 줄을 필터링할 수 있습니다. 작업 블록 앞에 패턴을 지정하면 됩니다. 작업은 패턴과 일치하는 줄에서만 수행됩니다.
구문: awk '/pattern/ { action }' filename
"London"에 사는 사람의 이름만 찾아 출력해 보겠습니다.
#!/bin/bash
# Create a sample file
echo "Name Age City" > data.txt
echo "Alice 30 NewYork" >> data.txt
echo "Bob 24 London" >> data.txt
echo "Charlie 35 Paris" >> data.txt
echo "David 28 London" >> data.txt
echo "Original content:"
cat data.txt
echo ""
echo "---"
echo "Running awk command (/London/ {print $1}):"
awk '/London/ {print $1}' data.txt
# Clean up
rm data.txtawk로 초기화 및 마무리하기
awk를 사용하면 어떤 줄도 처리하기 전에 수행할 작업(BEGIN 블록)과 모든 줄을 처리한 후 수행할 작업(END 블록)을 지정할 수 있습니다.
BEGIN 블록은 머리글을 출력하거나 변수를 초기화할 때 유용합니다. END 블록은 요약, 합계 또는 바닥글을 출력할 때 적합합니다.
출력에 머리글과 바닥글을 추가해 보겠습니다.
#!/bin/bash
# Create a sample file
echo "Alice 30 NewYork" > data.txt
echo "Bob 24 London" >> data.txt
echo "Charlie 35 Paris" >> data.txt
echo "Original content:"
cat data.txt
echo ""
echo "---"
echo "Running awk command (BEGIN/END):"
awk 'BEGIN { print "--- User Data ---" } { print $1, $2 } END { print "--- End Report ---" }' data.txt
# Clean up
rm data.txtawk의 조건부 논리
awk의 작업 블록 안에서 if 문을 사용하면 필드 값이나 다른 조건에 따라 논리를 적용할 수 있습니다. 이를 통해 복잡한 데이터 필터링과 변환을 강력하게 수행할 수 있습니다.
구문: awk '{ if (condition) { action } }' filename
25세가 넘는 사용자만 출력해 보겠습니다.
#!/bin/bash
# Create a sample file
echo "Alice 30 NewYork" > data.txt
echo "Bob 24 London" >> data.txt
echo "Charlie 35 Paris" >> data.txt
echo "Diana 27 Berlin" >> data.txt
echo "Original content:"
cat data.txt
echo ""
echo "---"
echo "Running awk command (if $2 > 25):"
awk '{ if ($2 > 25) { print $1, $2 } }' data.txt
# Clean up
rm data.txt빠른 확인: sed 및 awk
names.txt라는 파일에 다음 내용이 있다고 가정해 보겠습니다.
John Doe,30,New York
Jane Smith,25,London
Peter Jones,40,Paris
다음 중 30세보다 많은 사람의 이름(첫 번째 필드)만 출력하는 명령은 무엇입니까?
복습: sed 및 awk의 강력한 기능
이제 스트림 편집에 사용하는 sed와 고급 텍스트 처리에 사용하는 awk의 강력한 기능을 살펴보았습니다!
sed는 줄 단위로 간단한 치환, 삭제 및 변환을 수행할 때 적합합니다.awk는 구조화된 텍스트를 구문 분석하고, 필드를 다루며, 데이터 추출과 보고서 작성을 위해 조건부 논리를 적용하는 데 뛰어납니다.
이러한 도구는 Linux 환경에서 스크립팅, 로그 분석 및 데이터 조작을 수행할 때 필수적입니다.
자주 묻는 질문
“고급 텍스트 조작(sed, awk)” 강의는 무료인가요?
네 — “고급 텍스트 조작(sed, awk)” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Linux Command Line & Bash Scripting Mastery 강의 전체를 잠금 해제할 수 있습니다. Linux Command Line & Bash Scripting Mastery 강의에는 총 4개의 강의가 포함되어 있습니다.
“고급 텍스트 조작(sed, awk)”에서 뭘 배우나요?
스트림 편집에 사용하는 'sed'와 강력한 텍스트 처리, 패턴 검색 및 데이터 추출에 사용하는 'awk'를 알아봅니다. 브라우저에서 직접 실행하는 실습 코드로 Linux Command Line & Bash Scripting Mastery을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Linux Command Line & Bash Scripting Mastery을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Linux Command Line & Bash Scripting Mastery은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“고급 텍스트 조작(sed, awk)” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Linux Command Line & Bash Scripting Mastery 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Linux Command Line & Bash Scripting Mastery 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 고급 텍스트 조작(sed, awk)
- 보관 및 압축(tar, gzip, unzip)
- 디스크 사용량 및 시스템 정보(df, du, uname)
- 데이터 정렬 및 중복 제거 (sort, uniq, cut)