Tutoriales

Cómo forzar a awk a que no imprima una nueva itinerario

I tengo dos columnas (campos) en mi archivo de texto. Estoy tratando de insertar ‘|‘entre dos y cree una tabla HTML basada en el archivo actualizado. Mi archivo de entrada de muestra
FOO Esta es una descripción
BAR Otra descripción para bar
TEXT Otra descripción para TEXT

Así que corrí awk '"; $ 1 = ""; print 'entrada> salida pero el comando de impresión está agregando una nueva itinerario:
FOO |
Esta es una descripción
BAR |
Otra descripción para bar
TEXTO |
Otra descripción para TEXT

¿Hay alguna forma de decirle a awk que no imprima una nueva itinerario y cree el archivo? Esto es lo que quiero para poder crear una tabla HTML final basada en ‘|‘:
FOO | Esta es una descripción
BAR | Otra descripción para bar
TEXT | Otra descripción para TEXT

Usamos print en awk para mostrar datos, incluidas las variables. Sin confiscación, siempre agregará una nueva itinerario por defecto. Para evitar esto, usamos printf () o spintf () para forzar a awk a no imprimir una nueva itinerario



Use printf () cuando desee awk sin imprimir una nueva itinerario

La sintaxis es la subsiguiente para mostrar una sujeción / palabras / variable construida a partir de lista-expr según formato:

printf "format", var1
sprintf "format", var1
printf "%s", $var_a
printf "%d", $var_b
printf "%.2fn", $1

AWK printf duplica la función de la biblioteca printf C escribiendo en screen / stdout. Las especificaciones completas del formato ANSI C se reconocen con conversiones:

  • %C : Un tipo de char sin firmar
  • %D : El argumento int se convierte a notación quebrado con signo
  • %mi : El argumento doble se redondea y se convierte en el estilo [-]d.ddde ± dd
  • %MI : Una conversión E usa la letrilla E (en sitio de e) para introducir el indicativo. El indicativo siempre contiene al menos dos dígitos; si el valencia es cero, el indicativo es 00
  • %F : El argumento doble se redondea y se convierte a notación quebrado en el estilo [-]ddd.ddd
  • %gramo : El argumento doble se convierte en estilo f o e. La precisión especifica el número de dígitos significativos
  • %I : El argumento int se convierte a notación quebrado con signo.
  • % o : El argumento int sin signo se convierte en octal sin signo.
  • %s : La cuerda
  • % u : Un quebrado sin signo
  • %X : Un hexadecimal sin signo
  • %X : Un hexadecimal sin signo
  • %% : A ‘%‘ está escrito
  • calificadores de conversión h y l : Una subsiguiente conversión de enteros corresponde a un argumento int corto o int corto sin signo usando el calificador h. Una subsiguiente conversión de firme corresponde a un argumento long int o unsigned long int cuando se usa el calificador l.

awk sin imprimir nueva itinerario

Probemos awk de la subsiguiente modo:

awk '",$1; $1=""; print' input.txt
awk '",$1; $1=""; print' input.txt > output.txt
cat output.txt


los $ 1 = ""; imprimir; saltará el primer campo e imprimirá el resto de la itinerario.

awk – imprimiendo el valencia de la columna sin una nueva itinerario usando ORS

AWK tiene muchas variables integradas. Uno de ellos es SRO. Usamos ORS para terminar cada registro en la salida e inicialmente lo configuramos en » n» (nueva itinerario). En otras palabras, podemos modificar ORS y suprimir el uso de printf o sprintf en nuestro awk de la subsiguiente modo para evitar mostrar una nueva itinerario:

awk 'BEGIN{ORS=""}"; $1=""; print ; print "n"' input.txt
awk 'BEGIN{ORS=""}"; $1=""; print ; print "n"' input.txt > output.txt

Por supuesto, podemos suprimir awk y usar una combinación de tr y cut incluso. Perl es otra opción. Pero recuerde, awk creado para este tipo de trabajo. Por lo tanto, sugeriría seguir con awk.

Generando salida final a formato HTML usando AWK

Ahora todo lo que tiene que hacer es escribir el subsiguiente AWK:

awk -F'|' 'BEGIN{ print "<table>"} { print "<tr><td>" $1 "</td><td>" $2 "</td></tr>"} END{ print "</table>"}' output.txt
awk -F'|' 'BEGIN{ print "<table>"} { print "<tr><td>" $1 "</td><td>" $2 "</td></tr>"} END{ print "</table>"}' output.txt > tmp.html
cat tmp.html

Conclusión

En este tutorial rápido, aprendimos cómo usar awk para no imprimir una nueva itinerario usando la exposición printf / sprintf o la variable awk de ORS. Asimismo es posible combinar todo en un solo AWK, que se deja como prueba a los lectores. Consulte la página de manual de awk:
man awk



Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba