Bash 쉘에서는 다양한 파일 조작을 위한 고급 명령어들이 제공됩니다. 이 명령어들은 파일의 특정 부분을 추출하거나 변형, 정렬, 필터링하는 등의 작업에 사용됩니다.
- awk: 텍스트 데이터를 조작하고 보고서를 생성하는 강력한 도구입니다.
- cut: 텍스트 파일에서 열을 추출하거나 삭제하는 기능을 제공합니다.
- sort: 파일의 내용을 정렬하는 기능을 제공합니다.
- sed: 텍스트 데이터를 변형하거나 필터링하는 스트림 에디터입니다.
[기본 샘플 코드]
awk를 사용하여 특정 열 출력:
echo "John 25" | awk '{print $2}' # "25" 출력
cut을 사용하여 특정 열 추출:
echo "John,25" | cut -d ',' -f 2 # "25" 출력
sort를 사용하여 파일 정렬:
sort file.txt # 파일의 내용을 정렬하여 출력
sed를 사용하여 문자열 대체:
echo "Hello World" | sed 's/Hello/Hi/' # "Hi World" 출력
[응용 코드]
다른 함수와 함께 사용하는 예시:
# awk를 사용하여 특정 조건에 맞는 행 추출
filter_rows() {
local condition="$1"
awk "$condition" file.txt
}
# 조건에 맞는 행 출력
filter_rows '$2 > 20'
# cut을 사용하여 특정 열 추출
extract_column() {
local delimiter="$1"
local column="$2"
cut -d "$delimiter" -f "$column" file.txt
}
# 첫 번째 열 추출
extract_column ',' 1
조건문과 반복문과 함께 사용하는 샘플 코드:
# 파일의 특정 패턴을 가진 행 필터링
while IFS= read -r line; do
if [[ $line == *"apple"* ]]; then
echo "$line"
fi
done < file.txt
# awk와 반복문을 사용하여 특정 조건에 맞는 행 처리
awk '{if ($2 > 20) print "Found:", $1}' file.txt
[성능 향상을 위한 팁]
- 대용량 파일을 처리할 때는 필요한 열만 추출하고 불필요한 작업은 최소화하여 성능을 향상시킬 수 있습니다.
- awk에서는 필요한 작업을 단일 명령으로 처리하거나, 가능한 한 내장 함수를 사용하여 처리할 수 있습니다.
[성능 향상을 위한 팁에 해당하는 샘플 코드]
# awk에서 필요한 작
업을 단일 명령으로 처리
awk '{sum += $1} END {print "Sum:", sum}' file.txt
# awk에서 내장 함수 사용
awk 'BEGIN {srand()} {print rand(), $0}' file.txt | sort -n | cut -d ' ' -f 2-