El retorno del comando awk no se encuentra en el escritorio de Ubuntu pero funciona bien en Centos

El retorno del comando awk no se encuentra en el escritorio de Ubuntu pero funciona bien en Centos

Creo test.sh para leer un archivo con contenido

item1:return1
item2:return2
...
item10:return10

contenido test.sh

VAR1=$1
VAR2= `grep "^${VAR1}:" /home/path/file | awk '{print $2;}'`

echo "${VAR2}";

ejecutar prueba

sh test.sh item1

devolver

: not found test.sh: 
: not found test.sh: 

Cuando ejecuto lo mismo en Centos. devolver

return1

¿Qué hay de malo con el comando awk?

Respuesta1

No hay nada de malo con el comando awk. Su problema test.shno se puede encontrar como se muestra en el mensaje. CentOS probablemente establece su ruta a la variable PATH.

Ejecútelo como sh ./test.sh item1(supongo que test.sh está en su directorio actual)

Editar: debería haber prestado más atención al script, :el problema está en grep. Esto funciona.

VAR1=$1
VAR2=`grep "${VAR1}\:" file | awk '{print $2}'`
echo "${VAR2}";

Sin embargo, awk por defecto no lo reconoce :como separador, tuve que usar

item1: return1
item2: return2

No tengo idea de cómo podría funcionar en el servidor o en centos sin este cambio.

información relacionada