/var/log/messages
쉘 스크립트 배열로 파일의 필드들을 저장하기 본문
반응형
배열을 이용하면 한개의 데이터를 상자안에 저장해서 필요한 것만 찾아볼 수 있는 이점이 있다.
쉘 스크립트에선, 배열을 이용해서 데이터를 한 개의 필드의 데이터를 저장할 수가 있다.
예시로 서버에 등록이 된 계정만 배열에 저장하려고 한다.
저장이 되어야 할 목록은 다음과 같다.
명령어: awk -F: '$3 >= 0 && $3 < 1000 {print $1}' /etc/passwd
그럼, 이 명령어를 그대로 배열에 대입하면 완성이 될 것 같다.
오류가 출력이 되었다. 이유는 awk로 출력이 된 파일을 배열로 저장하려면 readarray 혹은 mapfile을 이용해야 한다.
의미하는 바는, 한번에 여러개의 파일을 저장하길 원한다면 전에 글에서 제공했던 내용대로 하면 안 된다는 것이다.
다음의 명령어를 사용해보자
명령어: readarray -t arr < <(awk -F: '$3 >= 0 && $3 < 1000 {print $1}' /etc/passwd)
저장이 제대로 되었다면, 다음과 같이 출력이 될 것이다.