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.
while
bucle? :)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
awk
sola, pero si desea elwhile...read
ciclo, esto ciertamente superaawk
procesos separados por cada línea. Solo un FYI, supongo.fuente
Con
-v a="$1"
establecemos laawk
variablea
en 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
awk
variableaccountNum
, 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
awk
evalúa a cero.fuente