awk print で 2 つの変数を echo で区切るにはどうすればよいでしょうか?

awk print で 2 つの変数を echo で区切るにはどうすればよいでしょうか?

.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)

関連情報