'IT 이야기/Linux 셸 스크립트' 카테고리의 글 목록 (7 Page)
본문 바로가기

IT 이야기/Linux 셸 스크립트137

[Linux 셸 스크립트] 텍스트 처리 - 074 숫자로 된 CSV 파일에서 평균값 계산하기 1. 사용 명령어 (1) awk 2. 키워드 & 사용처 (1) 키워드 평균값, CSV 파일 (2) 사용처 CSV 파일에서 특정 컬럼값의 평균값을 계산해서 파일로 출력하고 싶을 때 사용합니다. 3. 실행 예제 $ cat data.csv ${filename}.avg ③ 5. 해설 이 스크립트는 명령행 인수를 지정한 CSV 파일의 세 번째 컬럼에서 값의 평균값을 계산해서 출력합니다. 평균값은 우너본 파일명에 확장자 .avg를 붙인 파일에 출력합니다. 여러 CSV 파일마다 평균값을 출력하고 싶을 때 사용하면 됩니다. 여기에서 사용하는 CSV 파일은 "ID번호, 이름, 점수" 형식이라고 가정합니다. 셸 스크립트에서 수치 계산은 expr 명령어를 자주 사용합니다. 하지만 expr은 정수 계산만 가능하므로 소수가 포.. 2021. 4. 9.
[Linux 셸 스크립트] 텍스트 처리 - 073 CSV 파일에 ID 목록을 입력해서 대응하는 ID 컬럼값 얻기 1. 사용 명령어 (1) read (2) grep 2. 키워드 & 사용처 (1) 키워드 IFS, CSV, 레코드, 컬럼, 구분자, 분할 (2) 사용처 ID 목록 파일과 CSV 파일에서 지정한 ID의 컬럼값을 표시하고 싶을 때 사용합니다. 3. 실행 예제 $ cat data.csv 2021. 4. 8.
[Linux 셸 스크립트] 텍스트 처리 - 072 CSV 파일에서 지정한 특정 레코드의 컬럼값 얻기 1. 사용 명령어 (1) cut (2) read (3) echo 2. 키워드 & 사용처 (1) 키워드 CSV, 레코드, 컬럼 (2) 사용처 CSV 파일에서 인수로 지정한 ID에 대응하는 특정 컬럼을 표시하고 싶을 때 사용합니다. 3. 실행 예제 $ cat data.csv 0001,Kim,45 0002,Lee,312 0003,Park,102 0004,Kang,3 0005,Seo,92 $ ./csv-select.sh 0004 &2 ① exit 1 ① fi # CSV 파일이 존재하지 않으면 종료 if [ ! -f "$csvfile ]; then ② echo "CSV 파일이 존재하지 않습니다: $csvfile" >&2 ② exit 1 ② fi while read line ③ do # cut으로 컬럼 추출 id=.. 2021. 4. 8.
[Linux 셸 스크립트] 텍스트 처리 - 071 입력 파일 해시값을 줄마다 추가해서 출력하기 1. 사용 명령어 (1) paste (2) md5sum (3) read (4) awk 2. 키워드 & 사용처 (1) 키워드 해시, 페이스트, 컬럼 (2) 사용처 파일에서 입력값을 읽어서 줄마다 해시값을 계산해서 CSV 파일에 출력하고 싶을 때 사용합니다. 3. 실행 예제 $ cat data.txt abcdefg password 123456 $ ./paste.sh data.txt abcdefg,7ac66c0f148de9519b8bd264312c4d64 password,5f4dcc3b5aa765d61d8327deb882cf99 123456,e10adc3949ba59abbe56e057f20f883e 4. 스크립트 #!/bin/sh # 해시값을 출력할 임시 파일을 초기화 tmpfile="hash.txt" ① :.. 2021. 4. 8.
[Linux 셸 스크립트] 텍스트 처리 - 070 파일 앞머리의 셔뱅(shebang, #!/bin/sh 등)을 추출해서 스크립트에 따라 확장자 붙이기 1. 사용 명령어 (1) head (2) mv 2. 키워드 & 사용처 (1) 키워드 셔뱅, shebang, 확장자, 첫줄 (2) 사용처 확장자가 없는 스크립트 파일에 자동으로 확장자를 부여하고 싶을 때 사용합니다. 3. 실행 예제 $ ./shebang.sh script 'script' -> 'script.sh' $ ./shebang.sh sample1 'sample1' -> 'sample1.pl' 4. 스크립트 #!/bin/sh # 대상 스크립트 파일이 있는지 확인 if [ ! -f "$1" ]; then ① echo "지정한 파일을 찾지 못했습니다: $1" >&2 exit 1 fi # 파일 첫 줄 읽음 headline=$(head -n 1 "$1") ② # 파일 첫 줄에 따라 확장자를 판정해서 부여함 .. 2021. 4. 7.
[Linux 셸 스크립트] 텍스트 처리 - 069 텍스트 파일에서 구분자를 지정해서 컬럼 추출하기 1. 사용 명령어 (1) env (2) grep (3) cut 2. 키워드 & 사용처 (1) 키워드 환경 변수, 분지라, 컬럼 (2) 사용처 설정된 환경 변수 목록을 얻어서 어떤 변수명이 정의되어 있는지 확인하고 싶을 때 사용합니다. 3. 실행 예제 $ ./env.sh 2021. 4. 7.
[Linux 셸 스크립트] 텍스트 처리 - 068 ID가 적힌 목록 파일에서 ID를 추출할 때 ID 끝 문자로 정렬하기 1. 사용 명령어 (1) rev (2) sort 2. 키워드 & 사용처 (1) 키워드 끝 문자, 정렬, ID 목록 (2) 사용처 ID 목록 파일의 끝 문자 순서대로 정렬하여 처리하고 싶을 때 사용합니다. 3. 실행 예제 $ cat id.lst PPX0_2 AN39_9 UIA5_3 BA06_7 QXD3_0 $ ./revsort.sh id.lst QXD3_0 PPX0_2 UIA5_3 BA06_7 AN39_9 4. 스크립트 #!/bin/sh # 임시 파일 지정 tmpfile="sort.lst" # 대상 ID 파일 확인 if [ ! -f "$1" ]; then ① echo "ID 목록 파일을 지정하세요." >&2 ① exit 1; ① fi # ID 끝 문자 숫자로 목록 정렬 rev "$1" | sort | re.. 2021. 4. 7.
[Linux 셸 스크립트] 네트워크 - 067 로컬 셸 스크립트 파일을 원격 호스트에서 그대로 실행하기 1. 사용 명령어 (1) cat (2) ssh (3) hostname (4) ping 2. 키워드 & 사용처 (1) 키워드 SSH, 원격 호스트 (2) 사용처 로컬에 있는 셸 스크립트를 접속한 곳에 복사하지 않고 ssh로 실행하고 싶을 때 사용합니다. 3. 실행 예제 $ ./script-remote.sh server04 Ping to 192.168.2.35 : [OK] server05 Ping to 192.168.2.35 : [NG] server06 Ping to 192.168.2.35 : [OK] 4. 스크립트 #!/bin/sh username="park" script="check.sh" cat $script | ssh ${username}@192.168.2.4 "sh" ① cat $script | s.. 2021. 4. 7.
[Linux 셸 스크립트] 네트워크 - 066 IP 주소에 따른 처리 분기를 case문으로 작성하기 1. 사용 명령어 (1) case (2) ping 2. 키워드 & 사용처 (1) 키워드 IP 주소, 분기, 일치, 문자열 (2) 사용처 IP 주소마다 다른 처리를 하도록 간단히 분기하고 싶을 때 사용합니다. 3. 실행 예제 $ ./ipmatch.sh 192.168.2.1 Ping to 192.168.2.1 : [OK] $ ./ipmatch.sh 192.168.3.1 192.168.3.1 테스트 대상이 아닙니다. 4. 스크립트 #!/bin/sh # 대상 IP 주소르르 명령행 인수로 지정하지 않으면 에러 표시 후 종료 if [ -z "$1" ]; then ① echo "IP 주소를 지정하세요." >&2 ① exit 1 ① fi # 대상 네트워크라면 ping 명령어 실행 case "$1" in 192.168... 2021. 4. 7.
[Linux 셸 스크립트] 네트워크 - 065 지정한 크기의 파일을 만들어서 전송 속도를 측정하기 1. 사용 명령어 (1) dd (2) time (3) ftp (4) bc 2. 키워드 & 사용처 (1) 키워드 전송 속도, 통신 속도, 네트워크 속도 (2) 사용처 어떤 서버에 임시 파일을 전송해서 통신 속도를 측정하고 싶을 때 사용합니다. 3. 실행 예제 $ ./transfer-sec.sh Filesize: 1024(KB) FTP Server: 192.168.2.5 Transfer Speed: 978 (KB/sec) 4. 스크립트 #!/bin/sh # 전송 속도를 측정할 임시 파일 크기 지정. 단위는 킬로바이트(KB) filesize=1024 ① # 전송 속도를 측정할 임시 파일명 tmpdatea="tmpdata.tmp" ② timefile="timecount.tmp" # 전송에 사용할 임시 파일 작성.. 2021. 4. 7.