데이터에서 특정 컬럼을 추출해야 하는 경우

  • 기본으로 awk를 사용하면 seperator는 " "(공백)으로 들어가기 때문에 -F오션을 사용해서 내가원하는 delimter를 설정할 수 있다.
  • print $를 사용하면 되는데, index는 1부터 시작이다

$ awk -F "\t" '{print $5}' data.txt.sample

  • reference
    • https://stackoverflow.com/questions/2609552/how-to-use-as-awk-field-separator

폴더별 디스크 사용량 확인하는 방법

리눅스에서 디스크 사용량이 얼마나 되는지 확인할때, du -h 를 하면 recursive하게 모든 디렉토리를 확인하게 된다. 아래와 같이 확인하면 정말 깔끔하게 폴더 아래에 있는 폴더까지 모두 합쳐서 결과를 보여주니 귯

데이터에서 구분자를 변경하는 방법

데이터의 delimeter가 항상 같지 않기 때ㅔ문에 알아 놓으면 좋은 방법!

1) tab을 ,로 변경하는 방법

$ sed 's/\t/,/g' inputfile > outputfile

2) ,를 tab으로 변경하는 방법

$ sed 's/,/\t/g' inputfile > outputfile

$ sed 's/::/,/g' ratings.dat > ratings.csv

  • 참고
    • https://stackoverflow.com/questions/3509332/how-to-convert-a-tab-separated-file-into-comma-separated-file

데이터를 특정 퍼센트로 나누는 방법

하나의 큰 데이터를 특정 퍼센트 만큼 샘플링을 하거나, train/test 데이터셋으로 나누고 싶은 경우가 있는데, 이때 사용하면 좋다.

1) split 70% based on lines

split -l $[ $(wc -l filename|cut -d" " -f1) * 70 / 100 ] filename

2) split 70% based on bytes

split -b $[ $(wc -c filename|cut -d" " -f1) * 70 / 100 ] filename

  • 참고
    • https://unix.stackexchange.com/questions/10219/split-how-to-split-into-different-percentages

데이터에서 구분자를 변경하는 방법

데이터의 delimeter가 항상 같지 않기 때ㅔ문에 알아 놓으면 좋은 방법!

1) tab을 ,로 변경하는 방법

$ sed 's/\t/,/g' inputfile > outputfile

2) ,를 tab으로 변경하는 방법

$ sed 's/,/\t/g' inputfile > outputfile

$ sed 's/::/,/g' ratings.dat > ratings.csv

  • 참고
    • https://stackoverflow.com/questions/3509332/how-to-convert-a-tab-separated-file-into-comma-separated-file

Linux에서 zip으로 압축하는 방법 + 분할 압!

리눅스에서 분할압축하는 방법에 대해서 설며한다. 기존에 macOS에서 분할압축하는 앱들이 많았는데, 유로로 전환했음...

일단 압축을 하려면 zip, 압축을 풀기 위해서는 unzip을 이용하면 된다.

압축하는 방법

  • 압축하기 위해서는 아래와 같이 명령하면 된다.

$ zip <zip_filename> filelist $ zip file.zip *

  • 만약 여기서 recursive하게 하고 싶다 (해당 폴더에 폴더가 존재한다)
  • -r을 이용해서 다음과 같이 명령

$ zip -r <zip_filename> *

  • 여기서 이제 압축을 해야하는데 카카오톡 경우에는 300MB 이상인 파일은 허용하지 않기 때문에 250MB로 분할 압축
  • -s를 이용해서 뒤에 파일 크기를 명시적으로 적어주면 끝
  • 여기서 만약 250이 아닌 300으로 적어주면 $ zip -s 250 <zip_filename> *

데이터를 특정 퍼센트로 나누는 방법

하나의 큰 데이터를 특정 퍼센트 만큼 샘플링을 하거나, train/test 데이터셋으로 나누고 싶은 경우가 있는데, 이때 사용하면 좋다.

1) split 70% based on lines

split -l $[ $(wc -l filename|cut -d" " -f1) * 70 / 100 ] filename

2) split 70% based on bytes

split -b $[ $(wc -c filename|cut -d" " -f1) * 70 / 100 ] filename

  • 참고
    • https://unix.stackexchange.com/questions/10219/split-how-to-split-into-different-percentages

쉘에서 중복단어 제거하는 방법 (Shell: How To Remove Duplicate Text Lines)

사전을 만든다고 할때 unique한 단어만 가져와야 할때 간단하게 쉘 스크립트로 작성이 가능하다.
pipeline은 정말 강력한 무기인듯 하다.
uniqsort를 통해서 중복된 단어를 제거하는 예제를 소개한다.

사용예

  • 사용전

banana banana apple banana

  • 실행후

apple banana

명령어(syntax)

sort {file-name} | uniq -u sort all_words.txt | uniq -u > uniqu_words.txt

쉘에서 curl post할때 json형식의 데이터를 사용하는 방법

쉘에서 json형식의 데이터를 curl을 통해 POST로 요청할때가 있는데,
파라미터로 받은 값, 또는 변수의 값을 직접 사용하면 json의 형태로 만들기 어렵다.
아래 방식을 이용하면 슆게 json 데이터의 형태로 post요청을 할 수 있다.

코드

물론 아래에 POST $HOST -d json을 넣을 수 있지만, 아래 함수와 같이 함수화를 하지 않으면 에러가 난다.

쉘에서 파일을 읽어서 파일에 있는 값을 변수로 저장하는 방법

쉘에서 파일을 저장하고, 그 파일의 값을 읽어서 변수로 사용하는 경우가 있다.
예를 들면 어떤 설정값을 미리 저장해놓고, 그 값에 따라 쉘에서 동작을 다르게 하고 싶을때가 있는데,
이때 사용하면 매우 유용하다.

코드

아래 파일 info.txt의 파일의 값을 읽어서 변수에 저장하는 코드이다.

info.txt A=15 B=23 C=4

+ Recent posts