BASH

포스트: 81
Tags

Posts

81 posts

[bash: awk] 특정 필드(field)의 값이 있는 경우, 또는 없는 경우 판별하기

반달가면|2018년 6월 18일

여러개의 항목 또는 필드(field)로 이루어진 내용에서 특정한 항목의 값이 있는지 없는지 판별할 때, 즉 특정한 필드 값의 유무에 따라 선별을 해야 할 경우에 awk를 활용할 수 있다. (우선 awk에서 조건에 따른 작업에 대한 기본적인 내용은 이전 게시물을 참고하자. 여기로) 예를 들어 이름, 전화번호, 이메일을 저장한 파일에서 전화번호가 없는 사람만 골라서 출력한다거나 아니면 이메딜 주소가 있는 사람만 출력하는 경우다. 각 항목을 탭(tab)으로 구분한다고 가정한다. # list.txt 파일 내용 확인 cat list.txt john 123-1234 [email protected] jane [email protected] sam 222-3434 위의 예시에서 탭이

[bash: grep] 파일 안에 섞인 바이너리(binary) 데이터 제거

반달가면|2018년 4월 20일

텍스트 파일에 뭔가 문제가 생겨서 중간에 바이너리(binary) 데이터가 포함된 경우 이를 제거하기 위한 방법이다. 간혹 텍스트 중간에 바이너리 바이트가 일부 삽입되어 있는 희한한 상태로 인하여 다른 부분에서 작업이 안되는 문제가 있어서 고육지책으로 셸 스크립트(shell script)를 만들어서 제거했다. 파일 내용을 한줄씩 읽어서 혹시라도 내용 중간에 바이너리가 있을 경우 이를 제외한 나머지만 모아서 별도의 파일로 다시 저장하도록 했다. 아래와 같이 작업. # 탭을 변수로 할당 tab=`echo -e "\t"` # 대상 파일: ~/my_file.txt target_file=~/my_file.txt # 결과 파일: ~/my_file.txt.result res_file=~/my_file.

[bash: nl, awk] 결과 출력에 행번호를 같이 표시하기

반달가면|2018년 2월 28일

화면에 결과를 출력할 때 행번호를 같이 표시할 필요하 있다면 nl을 이용할 수 있다. 아래의 예시를 보자. cat my_file.txt | nl 1 abc 2 def ... nl에서 아무련 옵션을 주지 않았을 경우, 6칸을 행번호 폭으로 할당하고 행번호와 출력 내용은 탭(tab)으로 구분된다. 만약 행번호의 폭을 1칸으로 하려면 -w 옵션을 사용하고, 구분자를 바꾸고 싶다면 -s 옵션을 사용하면 되겠다. # 행번호 폭 1칸, 구분자 콜론(:) cat my_file.txt | nl -w 1 -s ":" 1:abc 2:def ... 9:abc 10:def ... 출력 행수가 많아서 행번호 자리수가 -w에서 지정한 폭을 넘어갈 경우에는 당연히

데비안/우분투 계열 리눅스 배포판의 시스템 기본 bash 설정 파일

반달가면|2018년 2월 6일

사용자 계정의 bash 설정 파일인 ~/.bashrc 말고 시스템 전체에 대한 기본 설정파일의 경우, 데비안/우분투 계열 배포판에서는 /etc/bash.bashrc 파일이 된다. 페도라 등 다른 배포판에서는 다를 수 있음에 유의. 시스템 전체에 적용되는 기본 bash 설정에 대해 변경을 하고자 하는 사항이 있다면 이 파일을 편집하면 되겠다. 당연히 루트 권한을 필요로 한다. # 시스템 bash 설정 파일 편집 sudo vi /etc/bash.bashrc 변경 사항이 반영되려면 로그아웃했다가 다시 로그인하거나, 또는 su 명령으로 터미널 세션을 재시작해 주면 되겠다.