awkとif文

awkとif文

awkを使用してファイルから印刷しようとしていますが、出力は空です。これはこれまで私のコードです

accountNum=$1
while read -r LINE || [[ -n $LINE ]] ; do
            awk -F',' '{ if($1==accountNum) { print $3.$2 } }' Accounts
done < Accounts

私もこれを試しました:

accountNum=$1
while read -r LINE || [[ -n $LINE ]] ; do
            echo $LINE  | awk -F',' '{ if($1==accountNum) { print $3.$2 } }' 
done < Accounts

入力ファイルは次のとおりです。

1,Doe,John
2,Rooney,Wayne
3,Smith,Will
4,Crow,Russel
5,Cruise,Tom

このファイルを実行するときに予想される出力は次のとおりです。

$./file.sh 3
Will Smith

ただし、次のメッセージが表示されます。

$./file.sh 3
$

つまり、何も印刷されないという意味です。 Cutのソリューションについて知っていますが、awkを使いたいです。

ベストアンサー1

-v次のオプションを使用する必要がありますawk

awk -F',' -v accNum="$1" '$1 == accNum {print $3,$2}'

二重引用符を使用すると、$1シェルはすべての特殊文字(存在する場合)を処理します。

おすすめ記事