echo를 사용하여 awk 인쇄에서 2개의 변수를 분리하는 방법은 무엇입니까?

echo를 사용하여 awk 인쇄에서 2개의 변수를 분리하는 방법은 무엇입니까?

Portal이라는 이름의 .txt에 모든 내용을 반영하기 위해 작은 테스트를 수행했습니다. 터미널에 작성할 때 입력한 이름으로 스크립트가 모두 에코되도록 하고 싶지만 첫 번째 변수만 표시합니다.

input=$1

  for portal in $(grep $input /etc/portals | sed '/^#/ d' | awk '{print $1, $2}');

  do
    echo -e "\e[1;32m "$portal" \e[0m";
    exit 0
    done

else
    echo -e "\e[1;31m --> Wrong Input <-- \e[0m"
    exit 1
    done

fi

=============

코드는 작동하지만 $1만 인쇄되고 $2는 인쇄되지 않습니다. 코드를 awk '{print $1 $2}' 로 변경하면 탭이나 변수 사이에 공백이 없는 $1$2가 출력됩니다. =================================

에코가 표시되도록 변수를 어떻게 분리할 수 있습니까?

test1 [탭/스페이스] test2

답변1

#!/bin/bash

# exit if input is empty.
[[ -z $1 ]] && exit 1

# Check in the file /etc/portals for 
# the existens of the word "$1" and place 
# first word in "$a" and rest in "$b".
while read -r a b; do
    printf %s\\t%s\\n $a "$b" 
done < <(grep -P "^(?!#).*$1" /etc/portals)

관련 정보