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.shwc -l 표준출력을 카운트하는 방식으로 사용
  • sort

    • 행 단위 정렬. 기본은 오름차순
    • sort -r : 내림차순으로 정렬
    • sort -n : numeric sort
  • uniq

    • 중복된 행이 연속으로 있는경우 하나의 행으로만 표시
    • sort와 함께 사용
    • cat fruits.txtuniq
    • cat fruits.txtsortuniq
  • 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 +30xargs mv -i {} {}.bak
    • ls *.txtxargs cat » abc.merg
      • ls를 이용해 text파일 목록을 가져오고 각 파일 내용을 cat으로 읽고 병합파일 생성
  • Nohup & Screen
    • 터미널을 종료해도 백그라운드에서 명령이 계속 돌고 싶게 만들때 사용
    • nohup
      • 리눅스 상에서 sh파일이나 py파일을 데몬 형태로 실행
      • 터미널 세션이 끊겨도 실행을 멈추지 않고 동작
      • nohup shell.sh &
      • nohup을 만들면 nohup.out 로그 파일이 자동생성
      • 종료하는방법
        • ps efgrep 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
    • 현재경로 복사
      • echo ‘pwd’pbcopy

이 글이 도움이 되셨다면 추천 클릭을 부탁드립니다 :)

Buy me a coffeeBuy me a coffee





© 2020 modified by Tae You Kim

Powered by "shoman2"