Linux,Unix,BSD

[shell] 여러 수치 텍스트 파일에서 마지막 숫자만 일괄 제거하기

채윤아빠 2024. 5. 15. 12:07
728x90
반응형

개요

수치 데이터가 기록된 다수의 텍스트 파일이 있습니다.

이 텍스트 파일들에서 마지막 숫자만 제거하여 저장하는 스크립트 작성 방법을 알아 보겠습니다.


작업 스크립트

특정 폴더 아래에 있는 모든 파일들에 대하여 특정 작업을 수행하는 스크립트 템플릿을 활용합니다.

#!/bin/bash

# 대상 폴더 경로
target_dir="/path/to/parent/dir"

# 대상 폴더 내의 모든 파일 처리
for file in "$target_dir"/*; do
    # 파일인 경우에만 처리
    if [ -f "$file" ]; then

        # 여기에 실제로 수행할 작업을 추가하세요.
        echo "$file"
    fi
done


마지막 실수를 제거하기 위여 "sed" 줄편집기를 다음과 같은 정규 표현식을 써서 편집합니다.

$ number_line='0.1 0.2 0.3 0.4 0.5'
$ new_number_line=$(echo "$number_line"sed 's/\([0-9]*\.\?[0-9]*\)\s*$//')
$ echo "$new_number_line"
0.1 0.2 0.3 0.4


위 코드를 활용하여 다음과 같이 최종 스크립트를 작성하였습니다.

#!/bin/bash

# 대상 폴더 경로
target_dir="/path/to/parent/dir"

# 대상 폴더 내의 모든 텍스트 파일 처리
for file in "$target_dir"/*; do
    # 파일인 경우에만 처리
    if [ -f "$file" ]; then
        # 기존 파일 내용 읽기
        content=$(cat "$file")

        # 마지막 실수 제거
        new_content=$(echo "$content"sed 's/\([0-9]*\.\?[0-9]*\)\s*$//')

        # 새로운 내용으로 파일 덮어쓰기
        echo "$new_content" > "$file"
    fi
done

결론

정규 표현식을 잘 활용하면 다양한 작업을 할 수 있습니다.
그러나 정규 표현식이 복잡해질수록 가독성이 떨어질 수 있으므로, 가능한 간단하고 명확한 패턴을 사용하는 것이 좋습니다.