带有 if 语句的 awk

gkm*_*hit 8 shell scripting awk

我正在尝试使用 awk 从文件中打印,但我的输出为空。到目前为止,这是我的代码

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

我也试过这个:

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

输入文件是:

1,Doe,John
2,Rooney,Wayne
3,Smith,Will
4,Crow,Russel
5,Cruise,Tom
Run Code Online (Sandbox Code Playgroud)

我运行文件时的预期输出是

$./file.sh 3
Will Smith
Run Code Online (Sandbox Code Playgroud)

但我得到以下

$./file.sh 3
$
Run Code Online (Sandbox Code Playgroud)

那是什么都没有打印出来。我知道使用 cut 的解决方案,但我想使用 awk。

cuo*_*glm 8

您应该使用以下-v选项awk

awk -F',' -v accNum="$1" '$1 == accNum {print $3,$2}'
Run Code Online (Sandbox Code Playgroud)

使用$1双引号,shell 将为您处理其所有特殊字符(如果有)。