728x90

회사에서 지급받은 맥북에어(MacBook Air)가 3년을 넘기면서 슬슬 배터리 광탈 현상을 보이기 시작했습니다. 아직 회사에서 터치바(Touch Bar)가 내장된 신형 맥북을 지급하고 있지 않아 노트북 교체 신청을 할까 말까 고민했습니다만, 외부 미팅시마다 베터리 걱정에 끙끙 앓느니 뽑는게 낳을거라는 판단에 기존 맥북프로를 한대 지급받았습니다. 일단 메모리와 디스크 용량 커지니 좋고, 외장 모니터를 두개 연결해서 사용하니 이런 천국이 따로 없네요.


안타깝게도 회사에서 타임머신과 같은 장비를 지급해 주진 않기에 새로 받은 맥북에 정성껏 기존 환경에서 쓰던 설정들을 한땀한땀 옮기는 중입니다. 어플리케이션의 환경 설정 파일은 Import / Export 를 통해 쉽게 진행중입니다만, 운영체제 환경설정은 하나씩 옮겨야 하는 탓에 기억도 안나고 (자주 있는 작업이 아니니...) 여러가지로 괴로운 시간을 보내고 있습니다. 내가 이러려고 새로운 PC 달라고 했나 하는 생각에...


그 중 하나가 맥(Mac)의 파인더(Finder)에서 숨김파일을 보여주는 옵션입니다. 회사 인트라넷 게시판 어딘가에 기술된 내용이 있었습니다만 링크가 어디 갔는지도 모르겠고 해서... 구글링 후 다시 한번 블로그에 옮겨 적어 둡니다. 비슷한 경우가 또 언제 생길지 모르니 쉽게 찾아보기 위한 용도입니다. 후후후...


$ defaults write com.apple.finder AppleShowAllFiles YES && killall Finder


위의 명령을 터미널에서 입력하면 실행중인 파인더 프로세스가 모두 종료되고 모든 파일을 보여주도록 변경된 후 파인더가 다시 실행됩니다. 맥에서 숨김파일은 점(".")으로 시작하는 파일이나 폴더이기 때문에, 명령 실행 전후에 해당하는 파일이나 폴더가 보이는지 살펴보시면 됩니다. 언제나 숨김파일이 보이는게 부담스럽다면 필요할 때 위의 명령을 실행하고, 옵션을 "NO"로 바꾸어서 제한하는 것도 방법입니다.


$ defaults write com.apple.finder AppleShowAllFiles NO && killall Finder


- NoPD -

728x90
728x90

터미널에서 로그파일을 핸들링하면서 자주쓰이는 명령들이 있습니다. 전체 파일을 출력하기 위해서 cat 명령을 사용하고 특정한 컬럼의 값만 출력하기 위해서 파이프로 연결된 awk 명령을 쓸 때가 많습니다. 그런데, 컬럼이 아주 많은 경우에 특정한 컬럼만 제외하고 나머지를 출력할 수 있는 방법이 있을까요? 컬럼이 적은 경우에는 필요한 필드를 나열하는 것도 괜찮지만, 수십개, 수백개의 컬럼이 있다면 그다지 좋은 방법이 될 수가 없습니다.


예를 들어 temp.txt 파일에 아래와 같이 스페이스로 구분된 10개의 컬럼이 있다고 해보겠습니다. 이 파일의 정보들 중에서 특정한 컬럼의 값만 추출하고 싶다면 awk 명령을 이용해서 print 예약어를 이용할 수 있을 겁니다. 


$ cat temp.txt

C1 C2 C3 C4 C5 C6 C7 C8 C9 C10

$ cat temp.txt | awk '{print $3, $5}'

C3 C5


이 데이터 파일에서 거꾸로 3번 컬럼과 5번 컬럼의 값을 제외한 나머지 컬럼의 값을 추출하려면 어떻게 해야 할까요? print 구문의 파라메터로 $3 과 $5 만 빼고 나열해도 되겠지만, 아래와 같이 명령을 입력하면 훨씬 빠르고 쉽게 특정한 컬럼만을 제외하고 데이터를 정제할 수 있게 됩니다.


$ cat temp.txt | awk '{$3=$5=""; print $0}'

C1 C2  C4  C6 C7 C8 C9 C10


동일한 결과물을 얻어내는 방법이 여러가지 있다면 그중에서 가장 간편한 방법을 택하는 것이 누가 뭐라해도 진리일 겁니다. 작업시간을 절약하고 더 집중해야 하는 것들에 몰입하는 하루 되시길 바랍니다!



728x90
728x90

터미널에서 다량의 로그, 텍스트 파일을 핸들링 할때 awk 명령을 파이프로 연결하여 작업하는 경우가 많습니다. 예를 들어 텍스트 파일의 첫번째 컬럼이 "A" 인 행의 세번째 필드를 출력하는 방법은 대략 아래와 같을겁니다.


$ cat sample.txt | awk '$1=="A" {print $3}'


그런데 가끔은 특정한 조건을 만족하는 행의 모든 내용을 출력하고 싶을 때가 있습니다. 컬럼이 몇 개 안된다고 하면 print 명령으로 모든 컬럼을 지정하면 되겠지만 컬럼이 많다면 쉽지 않습니다. 이때는 print 의 파라메터로 $0 을 넘기면 모든 컬럼이 출력되게 됩니다.


$ cat sample.txt | awk '$1=="A" {print $0}'


자주 사용하지 않으면 잊어버리기 때문에 기억을 위해 남겨둡니다.


- NoPD -

728x90

+ Recent posts