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
결론
정규 표현식을 잘 활용하면 다양한 작업을 할 수 있습니다.
그러나 정규 표현식이 복잡해질수록 가독성이 떨어질 수 있으므로, 가능한 간단하고 명확한 패턴을 사용하는 것이 좋습니다.
'Linux,Unix,BSD' 카테고리의 다른 글
[linux] USB memory 다루기 (0) | 2024.06.06 |
---|---|
[shell] 파일의 크기가 0인 것만 삭제하기 (0) | 2024.05.16 |
[shell] 특정 폴더 아래의 모든 파일에 대한 작업 스크립트 (0) | 2024.05.14 |
[linux] minicom을 이용하여 USB serial port 접속하기 (0) | 2024.04.01 |
[linux] UDP 포트 열려 있는지 확인하는 방법 (0) | 2024.03.07 |