Shell 스크립트와 데이터 전처리
데이터 전처리와 쉘 커맨드
데이터 전처리시 사용할 쉘커맨드
cat
파일 이름을 인자로 받아 concat한 후 내용을 출력
cat hi.sh cat hi.sh .hello.sh
Redirect
커맨드의 출력을 filename에 기록하고 파일이 없으면 생성
만약 존재하는 파일에 추가하려면 append » 사용
echo "tyk" > ty.sh cat ty.sh echo "tyk" > ty.sh cat kyle.sh echo "tyk-abc" >> ty.sh echo "tyk-abc3" >> ty.sh echo "tyk-abc4" >> ty.sh cat ty.sh
Pipe( ) 특정 프로그램의 출력 결과를 다른 프로그램의 입력으로 사용시
A의 output을 B의 Input으로 사용
현재 폴더에 있는 파일명 중 hi가 들어가는 것을 찾고 싶다?
ls | grep "hi" ls | grep "hi" > output.txt #output.txt에 저장하기 history | grep "echo" #커맨드 히스토리 중 echo가 들어가는 명령어를 찾기 echo "hi" >> output.txt #특정 파일 마지막 줄에 단어 추가하고 싶다면
head, tail
head -n 5 ty.sh #파일의 앞/뒤 n행 출력 (파이썬 데이터프레임 핸들링과 유사)
wc
- word count - 사용자가 지정한 파일의 행, 단어, 문자수를 카운트
- wc -l : 라인 수를 카운트
cat ty.sh wc -l 표준출력을 카운트하는 방식으로 사용
sort
- 행 단위 정렬. 기본은 오름차순
- sort -r : 내림차순으로 정렬
- sort -n : numeric sort
uniq
- 중복된 행이 연속으로 있는경우 하나의 행으로만 표시
- sort와 함께 사용
cat fruits.txt uniq cat fruits.txt sort uniq
grep
- 파일에 주어진 패턴 목록과 매칭되는 라인 검색
- grep ^ : 라인 검색
- grep $ : 라인 끝
- grep . : gksk answk aocld
- grep [] : []안에 문자 하나라도 있다면 매칭
- grep [^] : []안의 문자 중 하나도 매칭되지 않는 문자
- grep -i : insensitively하게, 대소문자 구분없이 찾기
- grep -w: 정확히 해당 그 단어만 설정
- grep -v: 특정패턴 제외한 결과 출력
- grep -E: 정규표현식 사용하기
- grep -B: before 행 출력
cut
- 파일에서 특정 필드를 뽑기
- cut -f: 잘라낼 필드 지정
- cut -d: 필드를 구분하는 문자 지정. 기본은 tab으로 지정되어있다.
find
- 리눅스에서 파일 및 디렉토리 검색시 사용
- find .-name “File”
- find.-name-“*.h” -delete 검색후 삭제하기 study source : https://zzsza.github.io/kyle-school (쏘카 데이터팀 교육자료)
- awk
- 데이터를 조작하고 레포트를 생성하기 위한 명령어
- awk ‘pattern’ filename
- awk ‘{action}’ filename
- awk ‘pattern {action}’ filename
sed
- sed ‘s/찾을텍스트/바꿀텍스트/g’ 파일명 형태로 사용
alias : 축약어 또는 별칭
alias = ‘ s-a ’
- xargs
- 주로 find, ls, cat 뒤에 파이프로 사용
- 앞 명령어의 결과를 다음명령어의 입력으로 넘기는 파이프와 함께 사용
find . -mtime +30 xargs mv -i {} {}.bak ls *.txt xargs cat » abc.merg - ls를 이용해 text파일 목록을 가져오고 각 파일 내용을 cat으로 읽고 병합파일 생성
- Nohup & Screen
- 터미널을 종료해도 백그라운드에서 명령이 계속 돌고 싶게 만들때 사용
- nohup
- 리눅스 상에서 sh파일이나 py파일을 데몬 형태로 실행
- 터미널 세션이 끊겨도 실행을 멈추지 않고 동작
- nohup shell.sh &
- nohup을 만들면 nohup.out 로그 파일이 자동생성
- 종료하는방법
ps ef grep shell.sh - ps -ef로 pid번호 찾은 후에
- kill -9 pid번호
- screen
- nohup 대체가능
- apt-get install screen
- 스크린 생성
- screen -S screen_name
- screen -dmS screen_name 이 자주사용된다.
- -dm옵션 : 커맨드를 실행하고 대화식으로 하지 않고 인자로 연결
- -S옵션 : 사용 가능한 이름을 지정해 나중에 쉽게 다시 연결
- screen -list : 스크린 리스트 확인
- screen -r screen_name : 스크린으로 진입하기
- scp
- secure copy의 줄임말로 secure shell(ssh)를 이용해 네트워크로 연결된 호스트간에 파일을 주고받는 명령어
- local -> remote
- scp local_path user@ip:remote_directory
- nohup 대체가능
- 현재경로 복사
echo ‘pwd’ pbcopy
이 글이 도움이 되셨다면 추천 클릭을 부탁드립니다 :)