Estoy tratando de imprimir desde un archivo usando awk, pero mi salida está vacía. Aquí está mi código hasta ahora
accountNum=$1
while read -r LINE || [[ -n $LINE ]] ; do
awk -F',' '{ if($1==accountNum) { print $3.$2 } }' Accounts
done < Accounts
También he intentado esto:
accountNum=$1
while read -r LINE || [[ -n $LINE ]] ; do
echo $LINE | awk -F',' '{ if($1==accountNum) { print $3.$2 } }'
done < Accounts
El archivo de entrada es:
1,Doe,John
2,Rooney,Wayne
3,Smith,Will
4,Crow,Russel
5,Cruise,Tom
El resultado esperado cuando ejecuto el archivo es
$./file.sh 3
Will Smith
Pero me sale lo siguiente
$./file.sh 3
$
Eso es nada se está imprimiendo. Conozco la solución con corte, pero quiero usar awk.

whilebucle? :)Su script ya hace prácticamente el trabajo sin ninguno
awk:No estoy sugiriendo que esta sea una solución mejor o más eficiente que usarla
awksola, pero si desea elwhile...readciclo, esto ciertamente superaawkprocesos separados por cada línea. Solo un FYI, supongo.fuente
Con
-v a="$1"establecemos laawkvariableaen el valor del primer argumento de línea de comando del script, luego especificamos que la entrada está separada por comas-F ','. Si la primera columna es igual al valor dea, imprima las otras dos columnas en orden inverso.No obtiene nada en su salida al comparar la primera columna con la
awkvariableaccountNum, que no está configurada.Si hubiera habido una entrada cuya primera columna tuviera 0 (cero), esa entrada se habría impreso. Esto se debe a que el valor de las variables no definidas en se
awkevalúa a cero.fuente