[쉘스크립트] 텍스트파일의 라인을 읽어 ip와 id 구분하기
텍스트 파일의 각 라인을 읽어 해당 라인에서 ip 와 id 를 구분해서 출력하는 코드이다. 텍스트의 파일은 아래와 같은 형식이다. ip 와 이름-id 는 탭으로 구분된 상태이다.
192.168.10.100 홍길동-gildong 192.168.10.101 김철수-kcs0297
쉘스크립트 코드는 아래와 같다.
#!/bin/bash IPS=() IDS=() i=0 while IFS='' read -r line || [[ -n "$line" ]]; do IFS=$'\t' tmp=($line) IPS[${i}]=${tmp[0]} str=${tmp[1]} IFS=$'-' tmp=($str) IDS[${i}]=${tmp[1]} i=${i}+1 done < "$1" for (( i=0; i<${#IPS[@]}; i++)); do echo "${IPS[i]} / ${IDS[i]}" done
쉘스크립트 실행 방법을 ./read.sh hosts
와 같다. 쉘스크립트 파일과 텍스트 파일을 지정해주면 된다. 실행 결과는 아래와 같다.
192.168.10.100 / gildong 192.168.10.101 / kcs0297
참고
– https://stackoverflow.com/questions/1951506/add-a-new-element-to-an-array-without-specifying-the-index-in-bash
– https://unix.stackexchange.com/questions/410710/splitting-a-line-into-array-in-bash-with-tab-as-delimiter
– https://stackoverflow.com/questions/27291158/split-tab-separated-string-into-array-in-bash
– https://stackoverflow.com/questions/6654849/how-to-split-a-string-in-bash-delimited-by-tab