Tengo el siguiente problema extraño. Intentaré extraer una cadena de un archivo de texto con awk, pero no funciona en bash en mi servidor.
El archivo de texto se parece a (archivo de texto.txt)
dummy text name="formtoken" value="bd54839c3348d1c6ed7ab2c266f8a50b" dummy textY quiero obtener el valor del token de formulario del archivo. Mi declaración awk es:
awk '/formtoken/ {match($0,/name="formtoken" value="(.{32})"/,arr); print arr[1]}' < textfile.txtLocalmente, el resultado de los comandos es "bd54839c3348d1c6ed7ab2c266f8a50b"
En el servidor debian (conectado a través de ssh) obtengo "awk: línea 1: error de sintaxis en o cerca de",
Tal vez alguien tenga una buena pista para mí :)
Gracias,
RCX
Las distribuciones basadas en Debian usan Mawk como awk predeterminado y su comando no funciona con Mawk.
Funciona con Gawk (GNU Awk), que probablemente sea lo que hayas instalado localmente.
La razón por la que su comando no funciona con Mawk es que está usando la forma de 3 parámetros de la función match() , que es la extensión de Gawk; las firmas de función son:
match(s, r [, a])match(s, r)Ed Morton , en un comentario ya limpio, sugiere usar la siguiente variación del comando, que debería funcionar con todos los Awks:
awk 'sub(/.*name="formtoken" value="/,""){ sub(/".*/,""); print}' textfile.txt