[고급]파일 조작과 관련된 고급 명령어 (awk, cut, sort 등)

Bash 쉘에서는 다양한 파일 조작을 위한 고급 명령어들이 제공됩니다. 이 명령어들은 파일의 특정 부분을 추출하거나 변형, 정렬, 필터링하는 등의 작업에 사용됩니다.

  1. awk: 텍스트 데이터를 조작하고 보고서를 생성하는 강력한 도구입니다.
  2. cut: 텍스트 파일에서 열을 추출하거나 삭제하는 기능을 제공합니다.
  3. sort: 파일의 내용을 정렬하는 기능을 제공합니다.
  4. 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-

게시됨

카테고리

,

작성자