정보
-
업무명 : 리눅스 명령어를 이용하여 텍스트 정제 방법 소개
-
작성자 : 이상호
-
작성일 : 2020-02-09
-
설 명 :
-
수정이력 :
내용
[개요]
-
안녕하세요? 기상 연구 및 웹 개발을 담당하고 있는 해솔입니다.
-
오늘은 리눅스 (Linux) 명령어를 이용하여 텍스트 정제 방법을 소개드리고자 합니다.
[특징]
-
텍스트 정제를 위해서 리눅스 명령어 요구되며 이 프로그램은 이러한 목적을 달성하기 위한 소프트웨어
[기능]
-
수직 결합
-
가로 결합
-
행 추출
-
열 추출
-
행 변환
-
기타
[활용 자료]
-
자료명 : 종관기상관측 (ASOS)
-
자료 종류 : 기온
-
확장자 : txt
-
기간 : 2020년 02월 02일 - 2020년 02월 03일
-
자료 해상도 : 1시간 평균
-
제공처 : 기상자료개방포털
-
자세한 정보는 아래 링크 참조
[자료 처리 방안 및 활용 분석 기법]
-
없음
[사용법]
-
작업 환경 구축
-
소스 코드 작성 및 실행
-
실행 결과 확인
[사용 OS]
-
Linux (CentOS v7.0)
- VMware Workstation Pro v15.5
[사용 언어]
-
Shell Script (Bash)
소스 코드
[명세]
-
작업 환경
-
Obs_Asos_20200202.txt : 텍스트 예시
-
RunShell.sh : 실행 프로그램
-
root@linux220 /S/B/09.Linux# cat INPUT/Obs_Asos_20200202.txt (base)
108 서울 2020-02-02 01:00 0.6
108 서울 2020-02-02 02:00 -0.1
108 서울 2020-02-02 03:00 -0.9
108 서울 2020-02-02 04:00 -1.5
108 서울 2020-02-02 05:00 -1.3
108 서울 2020-02-02 06:00 -1.6
108 서울 2020-02-02 07:00 -1.6
108 서울 2020-02-02 08:00 -2
108 서울 2020-02-02 09:00 -1.4
108 서울 2020-02-02 10:00 0.7
108 서울 2020-02-02 11:00 2.7
108 서울 2020-02-02 12:00 3.8
108 서울 2020-02-02 13:00 4.8
108 서울 2020-02-02 14:00 4.9
108 서울 2020-02-02 15:00 5
108 서울 2020-02-02 16:00 4.7
108 서울 2020-02-02 17:00 4
108 서울 2020-02-02 18:00 3.3
108 서울 2020-02-02 19:00 2.6
108 서울 2020-02-02 20:00 2
108 서울 2020-02-02 21:00 1.9
108 서울 2020-02-02 22:00 1.8
108 서울 2020-02-02 23:00 1.8
-
수직 결합
-
"cat file1 file2"를 통해 수직으로 결합
-
#!/bin/bash
echo "================ cat ===================="
cat INPUT/Obs_Asos_20200202.txt INPUT/Obs_Asos_20200203.txt
-
가로 결합
-
"paste file1 file2"를 통해 가로 결합
-
"join -t file1 file2"를 통해 내부 조인으로 결합
-
#!/bin/bash
echo "================ paste ===================="
paste INPUT/Obs_Asos_20200202.txt INPUT/Obs_Asos_20200203.txt
echo "================ join ===================="
join -t , INPUT/Obs_Asos_20200202.txt INPUT/Obs_Asos_Tmp.txt
-
행 추출
-
"grep regex"를 통해 정규식에 해당하는 행 추출
-
"grep -v regex"를 통해 정규식에 해당하지 않는 행 추출
-
"head -n count"를 통해 처음부터 count 행 추출
-
"tail -n count"를 통해 끝에서 count 행 추출
-
#!/bin/bash
echo "================ grep ===================="
cat INPUT/Obs_Asos_20200202.txt | grep "2020-02-02 02:00"
echo "================ grep -v ===================="
cat INPUT/Obs_Asos_20200202.txt | grep -v "2020-02-02 02:00"
echo "================ head ===================="
head -n 5 INPUT/Obs_Asos_20200202.txt
echo "================ tail ===================="
tail -n 5 INPUT/Obs_Asos_20200202.txt
-
열 추출
-
"cut -d "delimiter" -f fields"를 통해 지정된 열 추출
-
"awk -F "delimiter" '{print fields}'"를 통해 지정된 열 추출
-
#!/bin/bash
echo "================ cut -d ===================="
cat INPUT/Obs_Asos_20200202.txt | cut -d " " -f 1
echo "================ awk ===================="
cat INPUT/Obs_Asos_20200202.txt | awk -F " " '{print $2}'
-
행 변환
-
"sed 's/regex/replacement/g'"를 통해 "regeb"를 "replacement"로 치환
-
"tr set1 set2"를 통해 "set1에 포함된 문자"를 "set2에 포함된 문자"로 변환
-
"tr -d set"를 통해 "set에 포함된 문자"를 삭제
-
"tr -s set"를 통해 "set에 포함된 문자의 반복"을 "문자"로 대치
-
#!/bin/bash
echo "================ sed ===================="
sName="I like orange"
echo $sName | sed "s/orange/apple/g"
echo $sName | sed "s/[a-z]/x/"
echo $sName | sed "s/[a-z]/x/g"
echo $sName | sed "s/like \([a-z]\+\)/eat \1/"
echo $sName | tr a-z A-Z
echo $sName | tr -d aiueo
echo $sName | tr -s p
-
기타
-
"sort"를 통해 정렬
-
"sort -r"를 통해 내림차순으로 정렬
-
"uniq"를 통해 중복 행 제거
-
"uniq -c"를 통해 중복행 제거 및 개수 표시
-
"uniq -u"를 통해 고유 행만 표시
-
"uniq -d"를 통해 중복 행만 표시
-
"wc -l"를 통해 행 개수 확인
-
"wc -w"를 통해 단어 수 확인
-
[전체]
참고 문헌
[논문]
- 없음
[보고서]
- 없음
[URL]
- 없음
문의사항
[기상학/프로그래밍 언어]
- sangho.lee.1990@gmail.com
[해양학/천문학/빅데이터]
- saimang0804@gmail.com
'프로그래밍 언어 > Linux' 카테고리의 다른 글
[Linux] 리눅스 VMware Workstation에서 "Failed to start the virtual machine" 오류 해결 방법 (0) | 2020.02.17 |
---|---|
[Linux] 리눅스에서 텍스트 처리를 위한 Awk 사용법 (0) | 2020.02.09 |
[Linux] 온라인 리눅스 (Linux) 환경에 따른 "FFmpeg" 설치 방법 (0) | 2020.02.08 |
[Linux] 리눅스 환경 (CentOS v7.0)에서 편리한 기능 (0) | 2019.12.22 |
[Linux] Window 10에서 가상 리눅스 환경 구축 (VMware Workstation Pro v15.5 + CentOS v7.0) (0) | 2019.12.21 |
최근댓글