스크립트
Posts
84 posts[bash: wc] 파일 내용이 몇개의 행으로 이루어졌는지 확인하기
예전부터 계속 활용해 오던 것인데, 생각난 김에 정리해 두기로. wc 명령으로 텍스트 파일이 총 몇줄인지(파일에 줄바꿈이 몇번 출현하는지) 확인해 볼 수 있다. -l 옵션을 사용하면 된다. 아래의 예시를 보자. # my_file.txt가 몇 줄인지 출력 wc -l my_file.txt 10 my_file.txt 만약 파일명을 출력하지 않고 싶다면 cat 명령과 조합하면 되겠다. # my_file.txt가 몇 줄인지 출력 cat my_file.txt | wc -l 10 개인적으로 가장 요긴하게 자주 쓰는 경우는 grep과 조합해서 특정 파일에서 특정 문자열을 포함한 행이 있는지 확인할 때다. # my_file.txt 내용중에 문자열 "abc"가 존재하는지 확인 grep
[bash: iconv] iconv를 이용한 텍스트 인코딩 확인
인코딩이 불분명한 텍스트 파일이 있을 경우 iconv를 이용하는 간단한 셸 스크립트를 작성해서 인코딩을 확인해 볼 수 있다. 캐럭터 인코딩을 변환해주는 도구인 iconv에 대한 기본적인 내용은 이전 게시물을 참고하자. 여기로 방법은 단순하다. iconv에서 지원하는 인코딩 목록 전체를 가지고 현재 내 리눅스 시스템에서 사용중인 인코딩(통상 UTF-8)으로 한번씩 다 변환해 보는 것이다. 이걸 수작업으로 하기가 귀찮으므로 스크립트를 만들어서 하면 된다. 먼저, iconv에서 지원하는 인코딩 목록을 출력해 보자. # 지원하는 캐럭터 인코딩 목록 확인 iconv -l | more 437// 500// 500V1// ... iconv 버전에 따라 출력이 다를 수도 있겠는데, 어쨌든 데
[bash: if] if 조건문에서 띄어쓰기에 유의
별 것 아닌 기본적인 내용이긴 한데, 스크립트를 만들다가 의외로 실수하는 경우가 종종 있어서 잊지 말자는 의미에서 적어 두기로. if 조건문에서 비교 조건을 지정하기 위해 대괄호([])를 사용하게 되는데, 대괄호와 비교조건 사이에는 반드시 공백이 있어야 한다. 아래의 예시를 보자. str="abc" # 오류 발생! (띄어쓰기 오류) if [[$str="abc"]] then echo "ABC" fi [[abc=abc]]: command not found 대괄호와 조건이 붙을 경우 bash에서 대괄호와 조건이 붙은 전체 문구를 하나의 명령어로 해석하여 처리하려 하므로 오류가 발생하게 된다. 띄어쓰기를 제대로 해 주면 정상 동작한다. # 정상 동작 if [[ $str="ab
[bash: xargs] 공백이 포함된 출력 결과를 다음 명령어의 인자로 사용
간단한 내용이지만 간혹 잊어버리고 있다가 오류가 발생하는 상황이 있어서 여기에 정리해 두기로. 우선 xargs 명령에 대한 기본적인 내용은 이전 게시물을 참고하자. 여기로 예를 들어 앞 명령어의 출력이 파일명인데 이것을 xargs 명령을 통해서 인자(argument)로 넘기고자 하는 상황을 생각해 보자. 확장자가 txt인 파일만 grep으로 추려낸 후 cat으로 내용을 확인하는 경우다. 통상 아래와 같이 입력하면 될 것이다. # 현재 디렉토리에 있는 txt 파일의 내용 확인 ls | grep "\.txt" | xargs cat 만약 위와 같이 입력했는데 txt 파일 중에 파일명에 공백이 포함된 것이 있다면 해당 파일에 대해서는 cat 명령이 제대로 실행되지 않고 오류 메세지가 나올 것



