%20hasta%20varias%20columnas.png)
Estoy usando Win7 con Cygwin. Tengo un resumen que funcionará para identificar coincidencias en un PAR de columnas, pero cuando intento introducir columnas adicionales (es decir, >2) no puedo hacerlo funcionar. Entonces lo siguiente me funciona:
gawk -F "^" '{ if ($3 == $7) print "0"; else print $3,$7; }' infile.txt > outfile.txt
Sin embargo, cuando agrego otro par de columnas, obtengo errores de sintaxis:
gawk -F "^" '{ if ($3 == $7 || $3 == $11) print "0"; else print $3,$7,$11; }' infile.txt > outfile.txt
Entonces, algo anda mal con el comando, pero los mensajes de error no me son realmente útiles. Cuando sustituyo "&&" por "||" También recibo errores ("nueva línea inesperada o final de cadena" inmediatamente después del primer "$7" y también "$3 no se reconoce como un comando interno o externo, programa ejecutable o archivo por lotes").
Aquí hay un archivo de entrada de ejemplo, que contiene las tres filas, con "^" como delimitador de columna:
paris^london^new york^paris^rome^paris
paris^london^munich^paris^rome^paris
paris^london^munich^berlin^rome^paris
Quiero poder ver si, en cada fila del archivo, las columnas 1, 4 y 6 coinciden entre sí. Entonces, en este caso, la fila 1 es "sí", la fila 2 es "sí" y la fila 3 es "no". Por lo tanto, el resultado debería mostrar "0" para "sí" o repetir toda la fila para "no". Entonces la salida sería:
0
0
paris^london^munich^berlin^rome^paris
Algunas ideas ?
Respuesta1
Trate de evitar ||
y&&
para
&&
pruebagawk -F "^" '$3 == $7{if($3 == $11){print "0"; next;}}{print $3,$7,$11}'
para
||
pruebagawk -F "^" '$3 == $7{print "0"; next;}$3 == $11{print "0"; next;}{print $3,$7,$11}'
Respuesta2
Finalmente lo tengo. Estoy usando Cygwin con Win7. Las comillas simples no eran buenas, por lo que reemplazar TODAS las comillas simples con comillas dobles arregló la sintaxis y, además, "||" No fue bueno, pero "&&" funciona bien. Entonces lo siguiente funciona:
boquiabierto -F "^" "{ if ($1 == $2 && $3 == $4 && $4 == $5 && $5 == $6) imprime 0; de lo contrario imprime $1,$2,$3; }" infile.txt > outfile.txt