테이블 데이터 처리용 command line tool들

Similar documents
슬라이드 1

Command line tools

Ruby 프로그래밍 3

빅데이터분산컴퓨팅-5-수정

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Microsoft PowerPoint 웹 연동 기술.pptx

Microsoft PowerPoint UNIX Shell.ppt

1. AWK 프로그래밍언어 AWK는자료처리중심의프로그래밍언어이며텍스트처리와보고서생성을목적으로만들어졌다. AWK라는명칭은이언어를처음설계한 Alfred V. Aho, Peter J. Weinberger, Brian W. Kernighan 3명의이름을따서지은것이다. AWK는

Microsoft PowerPoint - comp_prac_081223_2.pptx

Microsoft PowerPoint - 알고리즘_5주차_1차시.pptx

Microsoft PowerPoint UNIX Shell.pptx

Microsoft PowerPoint - u6.pptx

PowerPoint 프레젠테이션

MySQL-.. 1

Microsoft PowerPoint Python-DB

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

쉽게 풀어쓴 C 프로그래밊

CH04) 쿼리 (Query) 데이터베이스일반 1- 쿼리 (Query) 1) 쿼리의개념 테이블의데이터에서사용자가원하는조건에의해필드를추출하거나레코드를추출할수있는개체로즉, 여러가지방법으로데이터를보고, 변경하고, 분석할수있음 쿼리를폼, 보고서, 데이터액세스페이지등의레코드원본

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

문서의 제목 나눔고딕B, 54pt

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

< 고급 C 프로그래밍및실습 > 11 장구조체실습문제 문제에대한안내 - 특별한언급이없으면문제의조건에맞지않는입력은입력되지않는다고가정하라. - 특별한언급이없으면, 각줄의맨앞과맨뒤에는공백을출력하지않는다. - 출력예시에서 는각줄의맨앞과맨뒤에출력되는공백을의미한다. - 입출력예시

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

<4D F736F F F696E74202D2034C5D8BDBAC6AEC6C4C0CFC0D4C3E2B7C2312E505054>

PowerPoint 프레젠테이션

소만사 소개

문서의 제목 나눔고딕B, 54pt

5장 SQL 언어 Part II

문서 템플릿

PowerPoint 프레젠테이션

DBMS & SQL Server Installation Database Laboratory

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

4S 1차년도 평가 발표자료

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

USER GUIDE

Microsoft PowerPoint - 10Àå.ppt

BMP 파일 처리

강의 개요

Microsoft PowerPoint - chap06-1Array.ppt

14장 파일

PowerPoint Presentation

PowerPoint 프레젠테이션

第 1 節 組 織 11 第 1 章 檢 察 의 組 織 人 事 制 度 등 第 1 項 大 檢 察 廳 第 1 節 組 대검찰청은 대법원에 대응하여 수도인 서울에 위치 한다(검찰청법 제2조,제3조,대검찰청의 위치와 각급 검찰청의명칭및위치에관한규정 제2조). 대검찰청에 검찰총장,대

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-

歯MW-1000AP_Manual_Kor_HJS.PDF

Ver 1.0 마감하루전 Category Partitioning Testing Tool Project Team T1 Date Team Information 김강욱 김진욱 김동권

PowerPoint Presentation

강의 개요

PowerPoint 프레젠테이션

untitled

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

윈도우시스템프로그래밍

PowerPoint 프레젠테이션

SQL

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

Visual Basic 반복문

중간고사

컴파일러

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc

Chapter 1

Oracle hacking 작성자 : 임동현 작성일 2008 년 10 월 11 일 ~ 2008 년 10 월 19 일 신규작성 작성내용

Microsoft PowerPoint - 05_Utility

슬라이드 1

Microsoft PowerPoint - chap06-2pointer.ppt

<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4>

untitled

예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = B = >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = >> tf = (A==B) % A

01Àå

[ 컴퓨터시스템 ] 3 주차 1 차시. 디렉토리사이의이동 3 주차 1 차시디렉토리사이의이동 학습목표 1. pwd 명령을사용하여현재디렉토리를확인할수있다. 2. cd 명령을사용하여다른디렉토리로이동할수있다. 3. ls 명령을사용하여디렉토리내의파일목록을옵션에따라다양하게확인할수

C 언어 프로그래밊 과제 풀이

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

MIC Check 1pt ( pwnable ) 아마도 문제 제목을 저렇게 낸 이유는 공연 전 마이크 테스트를 하는 것처럼 쉬운 것을 하나 풀면서 몸이라도 푸라고 저렇게 정한 게 아닐까 배점은 1 점짜리, pwnable.kr 의 cmd 와 비슷한 문제

KNK_C02_form_IO_kor

PowerPoint Template

Microsoft PowerPoint - C++ 5 .pptx

Observational Determinism for Concurrent Program Security

5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

Secure Programming Lecture1 : Introduction

PowerPoint Presentation

쉽게

Windows 10 General Announcement v1.0-KO


비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

Transcription:

테이블데이터처리용 command line tool 들 한국어정보의전산처리 2019. 4. 2.

cut 각레코드 ( 라인 ) 에서일정부분을잘라내어 ( 추출하여 ) 출력함. 스위치 -c : 추출할부분의위치를문자 ( 바이트 ) 수로지정. <50students_ext.csv -c 1-9,11-12 : 1 째 ~9 째문자, 11 째 ~12 째문자추출 한글한글자가 3 바이트이므로, 세글자로된이름과국어점수가출력됨. ls -l cut c 1-10 : 현재디렉토리에있는파일들의 permission 정보가출력됨 스위치 -d ~: (delimiter) 필드구분자를 ~ 로지정함. default 는탭 스위치 -f : 몇번째필드를추출할것인지를지정 <50students_ext.csv -d, -f 1,8 : 필드구분자를쉼표 (,) 로하여, 첫째필드와 8 째필드추출 이름, 평균 이출력됨.

join 피벗필드를공유하는 2 개의파일의각라인을통합함. 2 개의입력파일은소팅되어있어야함. 피벗필드의 default 는첫째필드 스위치 -1 필드넘버 : 첫째파일에서필드넘버로지정된필드를피벗필드로함. ( 스위치 -2 도마찬가지 ) 스위치 -a 파일넘버 : (all) 파일넘버 (1 또는 2) 로지정된파일에서비교불가능한라인도출력함. ( 복수지정가능 : -a1 -a2) 스위치 -t 문자 : 문자 를필드구분자로사용.

awk, gawk 테이블형식의데이터를처리할수있는매우강력한도구. BEGIN 블록, 메인블록, END 블록으로이루어짐. 메인블록은필수적. 나머지둘은수의적. 메인블록에서는, 각레코드의각필드들을추출하여처리함. $1, $2, $n : 첫째필드, 둘째필드, n 째필드. $0 : 해당레코드전체 NF : 해당레코드에서필드의수. NR: 레코드넘버 print $3,$2,$1 : 셋째필드, 둘째필드, 첫째필드를 ( 이순서대로 ) 출력 print $0,$2+$3 : 해당레코드를통째로출력하고, 그뒤에둘째필드와셋째필드를더한값을출력함. print 함수실행시쉼표부분에는 OFS 가출력되고맨끝에는 ORS 가출력됨. printf 함수의경우, 필드구분자, 레코드구분자가자동출력되지않음. BEGIN 블록에서는입력및출력시의레코드구분자, 필드구분자등을지정할수있음. RS 입력레코드구분자, FS 입력필드구분자 ( 스위치 -F 구분자 로도지정가능 ) ORS 출력레코드구분자, OFS 출력필드구분자 구분자를따로지정하지않으면 default 는 (O)RS 는줄바꿈, (O)FS 는공백

awk, gawk 메인블록앞에패턴 ( 정규표현 ) 을제시하면, 각레코드중이패턴에매치되는것에대해서만메인블록을실행함. <50students_ext.csv awk -F, BEGIN{OFS=","}/^ 김 /{print $0} 김 으로시작되는라인만출력 <50students_ext.csv awk -F, BEGIN{OFS=","}$1~/^ 김 /{print $0} 첫째필드가 김 으로시작되는라인만출력. <50students_ext.csv awk -F, 'BEGIN{OFS=","}$9~/ 개그맨 /{print $0} 9 째필드가 개그맨 을포함하는라인만출력 메인블록안에서 if 문으로조건을지정할수도있음. <50students_ext.csv awk -F, 'BEGIN{OFS=","}{if($2>80 && $2<90)print $1} 둘째필드 ( 국어점수 ) 가 80 보다크고 90 보다작은레코드만뽑아첫째필드 ( 학생이름 ) 출력 BEGIN 블록에서변수를지정하고, 메인블록에서연산을하여, END 블록에서결과를출력할수있음. gawk -F, 'BEGIN{OFS=",";sum=0} {sum+=$2} END{print sum,sum/nr} 변수 sum 을 0 으로초기화. 각레코드의둘째필드를 sum 에더함. 마지막에 sum 과평균을출력

awk, gawk 레코드 / 필드구분자지정을통해, 비정규포맷의파일처리도가능함. thesaurus.txt 는하나의표제항에대한정보가여러라인에걸쳐서제시되어있음. 새로운표제항으로넘어갈때에는줄바꿈을 2 번함. 줄바꿈문자를 LF 로하여다시저장. <thesaurus.txt awk 'BEGIN{ RS="\n\n"; ORS="\n"; FS="\n"; OFS="\t } { print substr($1,3), substr($2,2) } 레코드구분자는 \n\n, 필드구분자는 \n, 출력레코드구분자는 \n, 출력필드구분자는 \t 으로지정 각레코드에서첫째필드를추출하여셋째문자부터, 둘째필드를추출하여둘째문자부터출력 gawk 'BEGIN{RS="\n\n";ORS="\n";FS="\n"} $2~/@prep/{print $1} 둘째필드 ( 품사 ) 가 @prep 인경우에만첫째필드 ( 표제항 ) 를출력 gawk 'BEGIN{RS="\n\n";ORS="\n";FS="\n";OFS="\t"}$0~/\$15/{print $1} 레코드가 $15 를포함하는경우 ( 센스가 15 개이상 ) 에만첫째필드 ( 표제항 ) 출력

EmEditor 를이용한테이블자료처리 EmEditor Professional의편집메뉴안의 CSV 하위메뉴 정렬 : 다양한옵션의 sort 변환 : CSV, TSV, 또는기타구분자포맷사이의상호변환 열 (column) 선택 열추출하기 join : 피벗열 ( 고유키 ) 선택가능. 일치하지않는행선택가능 필터기능 : 특정조건을만족하는레코드만추출

csvkit 테이블형식, 특히 csv 파일을처리하는데특화된도구. 파이썬으로작성. 필드구분자는 default 로쉼표 입력파일의첫째라인은 header 임을전제로함. 이 header 를적극이용. 설치방법 python -m ensurepip (pip 이설치되어있는지확인 ) sudo pip install -U pip (pip 을최신버전으로업데이트 ) sudo pip install csvkit (pip 을이용하여 csvkit 를다운로드하여설치 ) 유닉스의기본 command line tool 과비슷하면서 csv 파일처리에특화된도구들제공 : csvsort, csvgrep, csvcut, csvjoin 기타도구들 csvstack : 복수의 csv 파일들을수직으로통합. ( 참고 : join 은수평통합 ) csvstat : 각필드에대한통계정보제공. R 의 summary 함수와비슷. csvsql : csv 파일을관계형 DB 처럼취급하여 SQL 쿼리를적용함. csvlook : csv 파일을표모양으로예쁘게출력함.

in2csv, csvlook, csvclean 다양한포맷의파일을 csv 파일로변환 지원하는입력파일 엑셀파일 :.xls.xlsx JSON 파일 고정폭포맷파일 (fixed-width formatted file) default 출력은 standard output( 화면 ) redirection (>) 으로결과를파일로저장 csvlook : command line 에서 csv 파일을표모양으로보여줌. 입력파일의필드가너무많아화면에다들어오지않을경우 <input csvlook less -S 화면 wrapping 없이, 화살표키와 page down 키등으로 navigate csvclean : 입력파일의오류를찾아내고수정해줌. https://csvkit.readthedocs.io/en/1.0.1/index.html

csvcut 입력파일의특정필드를추출, 재배열 스위치 -n : (name) 각필드의 title 을출력 스위치 -c : (column) 특정필드를지정하여추출 필드지정방법 1: 필드넘버 : csvcut -c 1,8,9 : 1,8,9 째필드추출 필드지정방법 2: 필드이름 : csvcut -c name,avg,job : 이름, 평균, 직업필드추출 일반 command line tool 인 cut 과매우유사하나 필드넘버대신필드이름을사용하여필드를지정할수있다는장점이있음. csvkit 의여러 tool 중가장먼저개발되었고 csvkit 의나머지 tool 에대한아이디어, 모델을제공하였음.

csvgrep 특정필드에대해, 특정문자열이나정규표현을포함하는지검사하여매치되는레코드만출력 <50students_ext.csv csvgrep -c avg -m 76 스위치 -m : (match) 단순문자열일치여부검사 avg 필드가문자열 76 을포함하는레코드만출력 아스키문자이외의문자를사용하면에러가남. C:\cygwin64\lib\python2.7 디렉토리안에 sitecustomize.py 파일이없으면새로만들어아래의두줄을써넣을것. 이파일이이미있으면기존파일맨끝에아래의두줄을첨가할것. import sys sys.setdefaultencoding('utf-8') 이조치를취하면스위치 -m( 단순문자열매칭 ) 에서는잘작동하나스위치 - r( 정규표현매칭 ) 에서는여전히제대로작동하지않음. <50students_ext.csv csvgrep -c sum -r 4.2 스위치 -r : (regular expression) 정규표현일치여부검사 sum 필드가정규표현 4.2 를포함하는레코드만검사

csvsort 특정필드를기준으로소팅함. 필드지정방법은 csvcut 과동일함. ( 필드넘버, 필드이름 ) 해당필드가문자열인지숫자인지알아서판단함. 따라서 -g, -n 같은스위치를지정해줄필요없음. 스위치 -r : (reverse) 내림차순소팅 <50students_ext.csv csvsort -c sum -r sum( 총점 ) 필드를기준으로내림차순소팅

csvjoin 두개의 csv 파일을수평으로통합함. 아무런스위치없이 ( 즉피벗필드를지정하지않고 ) join 하면, 그냥두파일을수평으로합치기만하므로, 피벗필드가두번나오게됨. csvjoin -c 피벗필드파일 1 파일 2 피벗필드를중심축으로하여두파일통합. 피벗필드는한번만나옴.

csvstack 동일한필드들로이루어진복수의 csv 파일들을수직으로통합함. 각파일의첫째라인에필드이름이있으나, 출력파일에서필드이름은맨앞에한번만나옴. 스위치 -g f1,f2,f3, fn : (group) 맨앞에 group 이라는필드를추가하여, n 번째입력파일에서온레코드는 fn 이라는값을부여함. csvstack -g m,f stu_male.csv stu_female.csv 남학생성적파일과여학생성적파일을수직통합하되, 남학생은 m 으로, 여학생은 f 로표시함.

csvsql SQL (structured query language) : 관계형 (relational) 데이터베이스에서특정정보를추출하기위해고안된쿼리언어. 데이터베이스분야에서는 must-know 다양한명령어가있으나가장많이쓰이는것은 select select 필드 from 입력 where 조건 : 입력테이블로부터조건을만족시키는레코드의필드들을추출함 csvsql 은 csv 파일을마치관계형 DB 인것처럼취급하여, 이로부터 sql 을통해원하는정보를추출할수있게함. <50students_ext.csv csvsql --query "select * from stdin where avg > 90 표준입력 (stdin) 으로부터 avg 가 90 을넘는레코드를추출하여모든필드 (*) 출력