텍스트 파일에 각 항목별로 값이 있을 때, 같은 항목끼리 모아서 그 합을 구하는 방법이다. 간단한 예시를 생각해 보면 쉽게 감이 잡힐 것이다. 텍스트 파일 my_data.txt의 내용이 아래와 같다고 가정하자. 각 항목의 구분자는 탭(tab)이다. # my_data.txt 파일 내용 확인..
find 명령으로 추려낸 파일들을 xargs 명령으로 넘겨서 해당 파일들에 대해 뭔가 작업을 하기 위한 스크립트를 만들 수 있다. 우선 find에 대한 기본적인 내용은 여기로, xargs에 대한 기본적인 내용은 여기로. 작업용 스크립트의 이름을 proc.sh라고 하자. 명령어 실행은 아래..
몇개의 문자열에 대한 검색은 기본적인 grep 명령으로 그 자리에서 작업을 해도 큰 문제가 없을 것이다.(grep을 이용한 다중 문자열 검색은 이전 게시물을 참고하자. 여기로) # my_data.txt에서 문자열 abc 또는 123이 포함된 행 출력 cat my_data.txt | grep "abc|1..
예전에 파일이 마지막으로 수정된 시간이 언제인지를 확인해서 파일이 현재 전송중인지 판단하는 방법을 정리해 두었는데, 한가지 방법을 더 정리해 두기로. 두번째 방법은 일정 시간 동안 파일 크기가 변했는지 그대로인지를 보고 판단하는 것이다. 현재 파일 크기가 얼마인지 확..
여러개의 항목 또는 필드(field)로 이루어진 내용에서 특정한 항목의 값이 있는지 없는지 판별할 때, 즉 특정한 필드 값의 유무에 따라 선별을 해야 할 경우에 awk를 활용할 수 있다. (우선 awk에서 조건에 따른 작업에 대한 기본적인 내용은 이전 게시물을 참고하자. 여기로)..
텍스트 파일에 뭔가 문제가 생겨서 중간에 바이너리(binary) 데이터가 포함된 경우 이를 제거하기 위한 방법이다. 간혹 텍스트 중간에 바이너리 바이트가 일부 삽입되어 있는 희한한 상태로 인하여 다른 부분에서 작업이 안되는 문제가 있어서 고육지책으로 셸 스크립트(shell sc..
자주 일어나는 일은 아닌데, 간혹 리눅스 bash 스크립트로 작업하면서 디렉토리 안의 파일 목록이 계속 변하는 경우(추가, 삭제) 변경 내용이 반영되지 않아서 이미 삭제된 파일이 존재한다고 간주해서 오동작을 하는 경우가 있었기 때문에 간단한 해결책을 정리해 두기로. 아마..
화면에 결과를 출력할 때 행번호를 같이 표시할 필요하 있다면 nl을 이용할 수 있다. 아래의 예시를 보자. cat my_file.txt | nl 1 abc 2 def . nl에서 아무련 옵션을 주지 않았을 경우, 6칸을 행번호 폭으로 할당하고 행번호와 출력 내용은 탭(tab)으로 구분된다. 만약 행번호의 ..
sed 명령에서 여러개의 문자열을 각각 대체할 경우 -e 옵션을 활용할 수 있는데(이전 게시물을 참고하자. 여기로), 대체 명령을 파일에 저장해서 이용할 수도 있다. 우선 -e 옵션의 예시를 보자. # 문자열 abc를 123으로, def를 456으로 대체 echo "abc def xyz&q..
간혹 실수하는 부분이 있어서 정리해 두기로. 리눅스 bash 스크립트에서의 정수 계산은 이전 게시물을 참고하자. 여기로 리눅스 bash 스크립트에서의 배열(array) 활용은 여기로, 연관 배열(associative array) 활용은 여기로. bash에서 기본적인 정수 계산은 이중 ..
case 조건문을 사용하기 어려운 복잡한 여러개의 조건에 따라 뭔가 작업을 한 후에 공통된 작업이 있는 경우 어떻게 할 것인가에 대한 문제다. 하나의 변수에 대하여 여러 조건에 따라 작업을 하는 경우에는 case로 하면 되지만 변수가 다수일 경우에는 if와 elif를 계속 나열해야 하..
통상적인 배열(array)에 대한 내용은 이전 게시물을 참고하자. 여기로 리눅스 bash 스크립트에서 연관 배열(associative array)을 사용하는 방법이다. 연관 배열은 인덱스를 수자로 사용하지 않고 문자열을 사용할 수 있다. 변수를 연관 배열로 사용하려면 해당 변수가 ..
우선, curl을 이용한 ftp 자동접속 방법의 기본적인 내용(파일 업로드/다운로드/삭제, 디렉토리 생성/삭제 등)은 이전 게시물을 참고하자. 여기로 업로드한 파일, 또는 이미 FTP서버에 존재하는 파일의 이름을 바꾸는 방법이다. FTP에서 이름을 변경하는 절차는 RNFR 명령으..
sed에서 문자열이 아니라 16진수값을 대체할 수도 있다. 따라서 텍스트 파일뿐만 아니라 바이너리 파일에 대해서도 대체 기능을 사용할 수 있다(sed를 이용한 문자열 대체의 기본은 이전 게시물을 참고하자. 여기로). 아래의 예시를 보자. # my_file.dat에서 모든 0xff를 0xf..