Entrada de barra invertida de terminal repetida en salida

2

Estoy usando zsh en un MacBook Pro, OS X 10.10. Cuando escribo ciertos comandos, como este:

cat myfile | awk -F $'\t' '{print $8, $9}' | sort | uniq -c | sort -k1,1n | awk '{if ($1 > 50) sum += $1} END {print sum}'

, entonces parte del comando se repite antes de la salida real del comando. La salida en este caso se ve como:

    " '{print $8, $9}' | sort | uniq -c | sort -k1,1n | awk '{if ($1 > 50) sum += $1} END {print sum}' : myusername2525

¿Alguien sabe cómo obtener la salida mezclada? Parece una vulnerabilidad de cadena de formato o algo similar a mí.

    
pregunta Hinton 19.05.2015 - 07:47

1 respuesta

2

El problema es el $ en la primera declaración awk en la cadena:

awk -F $'\t' '{print $8, $9}'

La opción -F para awk establece el separador de registros para su entrada. Si realmente espera que el separador sea un signo de dólar seguido de un carácter de tabulación, debe mover el signo de dólar a las comillas simples de esta manera:

awk -F '$\t' '{print $8, $9}'

Dejar el $ fuera de las comillas simples significa que el shell lo interpreta como una referencia de variable. Esto es lo que lleva a tu salida extraña. Si no espera un signo de dólar en el separador de campo, solo una pestaña, cambie la llamada awk a:

awk -F '\t' '{print $8, $9}'

Según lo que has dicho, lo anterior parece ser lo que quieres.

    
respondido por el Ian C. 19.05.2015 - 18:22

Lea otras preguntas en las etiquetas