awk로 쪼갠 이름 합치기 문의드립니다.
글쓴이: keiser / 작성시간: 수, 2019/10/23 - 5:48오후
안녕하세요.
bash 쉘 스크립트 공부 중에 막히는 부분 검색중 도무지 해결방안이 안떠올라 도움 요청 드립니다.
docker images 하면 image list가 조회되는데, list를 awk로 각각 쪼갠 후 일부만 사용하려 합니다. 이후 docker image tag 명령어에 사용하고자 합니다.
REPOSITORY TAG IMAGE ID CREATED SIZE 123.123.123.123:5000/rook-ceph v1.0.1 ec78bc08c619 5 months ago 696MB 123.123.123.123:5000/registry latest f32a97de94e1 7 months ago 25.8MB registry latest f32a97de94e1 7 months ago 25.8MB quay.io/coreos/flannel v0.11.0-amd64 ff281650a721 8 months ago 52.6MB
예) docker_script.sh 실행 후 새로운 주소 입력 받는다.
이후 다음과 같이 docker iamge tag 명령어로 image 이름을 변경합니다.
input: 456.456.456.456:5000 docker image tag 123.123.123:5000/rook-ceph:v1.0.1 456.456.456.456:5000/rook-ceph:v1.0.1 docker image tag 123.123.123:5000/registry:latest 456.456.456.456:5000/registry:latest ....
docker_tag.sh #!/bin/bash clear docker_image=`docker images |awk -F' ' '{print $1}'|grep -v REPOSITORY` docker_image_name=`docker images |awk -F' ' '{print $1}' | awk -F'/' '{print $NF}'|grep -v REPOSITORY` docker_image_tag=`docker images |awk -F' ' '{print $2}'|grep -v TAG` echo "input registry ip:port:" read input echo " " for docker_full_name in ${docker_image/ / } do if [ "$docker_full_name" != " " ];then echo docker image tag $docker_full_name continue fi done for image_name in $docker_image_name do echo "$image_name " done for image_tag in $docker_image_tag do echo "$image_name:$image_tag " done for print in $docker_full_name $image_name $image_tag do echo " $docker_full_name $input/$image_name:$image_tag" done
위와 같이 코드를 작성했는데, 각각으로 출력이되어 답답합니다. 또한 코드처럼 for문으로 해결이 힘들까요?
아래는 코드에 대한 출력상태입니다.
input registry ip:port: 456.456.456.456:5000 docker image tag 123.123.123.123:5000/rook-ceph docker image tag 123.123.123.123:5000/registry docker image tag registry docker image tag quay.io/coreos/flannel rook-ceph registry registry flannel flannel:v1.0.1 flannel:latest flannel:latest flannel:v0.11.0-amd64 quay.io/coreos/flannel 456.456.456.456:5000/flannel:v0.11.0-amd64 quay.io/coreos/flannel 456.456.456.456:5000/flannel:v0.11.0-amd64 quay.io/coreos/flannel 456.456.456.456:5000/flannel:v0.11.0-amd64
Forums:
원하는 바가 맞는지 모르겠군요. awk 를 질문해서
원하는 바가 맞는지 모르겠군요. awk 를 질문해서 awk 로 답변 드립니다.
결관는 다음과 같이 나옵니다.
혹시 출력되는 docker image tag 를
혹시 출력되는 docker image tag 를 실행하고 싶은 거라면
shell script 공부 중이라고 하시니..
shell script 공부 중이라고 하시니.. shell 버전도 같이 올려 드립니다.
공부를 해야 할 포인트
1. IFS 가 무엇인가?
2. bash 배열 활용
3. inline 환경 변수 사용
bash를 공부하기에 좋은 문서로 https://mug896.github.io/bash-shell/ 추천 드립니다.
이 분이 쓰신 글 중에 awk/sed 문서도 있습니다. https://mug896.gitbooks.io/shell-script/content/ 참고.
필력이 굉장히 좋으신 듯..
도움주셔서 감사합니다!
bash 스크립트 초보라, 너무 큰 도움이 되었습니다.
추천 주신 내용에 대해 공부하기 너무 좋은거 같습니다.
감사합니다^^
댓글 달기