Me pregunto cómo usar Awk para procesar cada 2 líneas de datos en lugar de cada uno. Por defecto, el separador de registros (RS) se establece en cada línea nueva, ¿cómo puedo cambiar esto a cada 2 líneas?awk para cambiar el separador de registros (RS) a cada 2 líneas
Respuesta
Divide & Conquer: hacerlo en dos pasos:
- uso awk para introducir línea en blanco
para separar cada registro de dos líneas:NR%2==0 {print ""}
- tubo a otro proceso awk y
registro conjunto separador a línea en blanco:BEGIN {RS=""}
Ventaja: En el segundoProcesotiene todos los campos de las dos líneas accesibles como $1 to $NF
.
awk '{print}; NR%2==0 {print ""}' data | \
awk 'BEGIN {RS=""}; {$1=$1;print}'
Nota:
$1=$1
se utiliza aquí para hacer cumplir una actualización sobre $0
(el conjunto de registro).
Esto garantiza que la salida imprime el registro de dos líneas en una línea.
Una vez que modifica un campo en su programa cuando procesa los registros de dos líneas, esto ya no es necesario.
Depende de lo que desea lograr, pero una forma es utilizar la instrucción getline
. Para cada línea, lea el siguiente y guárdelo en una variable. Por lo que tendrá primera línea en $0
y segunda en even_line
:
getline even_line
Si desea combinar líneas, utilice el paste
utilidad:
$ printf "%s\n" one two three four five
one
two
three
four
five
$ printf "%s\n" one two three four five | paste -d " " - -
one two
three four
five
Esto es un poco hacker, pero es un literal responda a su pregunta:
awk 'BEGIN {RS = "[^\n]*\n[^\n]*\n"} {$0 = RT; print $1, $NF}' inputfile
Establezca el separador de registros en una expresión regular que coincida con dos líneas. Luego, para cada línea, configure $0
en el terminador de registros (que es lo que coincide con la expresión regular en RS
). Esto realiza la división de campo en FS
. La declaración de impresión es solo un titular de lugar de demostración.
Tenga en cuenta que $0
contendrá dos líneas nuevas, pero los campos no contendrán ninguna línea nueva.
- 1. ¿Cómo cambiar el separador decimal con awk/sed?
- 2. Awk separador de campo comportamiento
- 3. JSTL para cada separador
- 4. uso awk para identificar registro de varias líneas y filtrado
- 5. Cómo usar ":" como separador de campo awk?
- 6. AWK eliminar líneas en blanco
- 7. búsqueda awk en múltiples campos de un archivo de registro de múltiples líneas
- 8. usando awk para contar ninguno de los registros
- 9. Cambiar el separador predeterminado en el molde
- 10. perl -a: ¿Cómo cambiar el separador de columna?
- 11. ¿Cómo resumir cada 10 líneas y calcular el promedio usando AWK?
- 12. Awk revertir ambas líneas y palabras
- 13. ¿Cómo inserto una línea en blanco cada n líneas usando awk?
- 14. awk extraer varios grupos de cada línea
- 15. Cambiar el separador decimal en MySQL
- 16. cambiar una línea con awk
- 17. mysql seleccione el recuento de registros para cada mes
- 18. líneas de lectura 2 a la vez
- 19. Algoritmo para la intersección de 2 líneas?
- 20. awk '{print $ 2, ",", $ 1}' en Emacs Lisp?
- 21. Fusiona 2 líneas en una
- 22. ¿Se llama a 1 = 2 para cada fila?
- 23. alternativa a awk
- 24. ¿Por qué awk no está imprimiendo nuevas líneas?
- 25. ¿Cambiar el separador de línea sed a NUL para que actúe como prefiltro "xargs -0"?
- 26. AWK: ejecutar CURL en cada línea y analizar resultar
- 27. Cambiar el delimitador de expresiones regulares en los patrones awk
- 28. Cambiar el color de un separador de línea en Cocoa
- 29. Cambiar el separador de ruta en Windows PowerShell
- 30. AWK salida a bash Array