Saltar al contenido

Use Awk para extraer la subcadena

Agradecemos tu ayuda para difundir nuestras crónicas en referencia a las ciencias de la computación.

Solución:

Solo desea establecer el separador de campo como . utilizando el -F e imprime el primer campo:

$ echo aaa0.bbb.ccc | awk -F'.' 'print $1'
aaa0

Lo mismo pero usando cut:

$ echo aaa0.bbb.ccc | cut -d'.' -f1
aaa0

O con sed:

$ echo aaa0.bbb.ccc | sed 's/[.].*//'
aaa0

Incluso grep:

$ echo aaa0.bbb.ccc | grep -o '^[^.]*'
aaa0

Estoy preguntando en general, cómo escribir un script awk compatible que realice la misma funcionalidad…

Resolver el problema en su pregunta es fácil. (compruebe la respuesta de los demás).

Si desea escribir un script awk, que sea portátil para cualquier implementación y versión de awk (gawk/nawk/mawk…) es realmente difícil, incluso si tiene –posix (gawk)

por ejemplo:

  • algo de awk funciona string en cuanto a caracteres, algunos con bytes
  • algunos soportes x escapar, algunos no
  • FS intérprete funciona de manera diferente
  • restricción de abreviatura de palabras clave/palabras reservadas
  • alguna restricción de operador, por ejemplo, **
  • incluso el mismo awk impl. (Gawk por ejemplo), la versión 4.0 y 3.x también tienen diferencias.
  • la implementación de ciertas funciones también son diferentes. (su problema es un ejemplo, ver más abajo)

bueno, todos los puntos anteriores solo se hablan en general. Volviendo a su problema, su problema solo está relacionado con la característica fundamental de awk. awk 'print $x' la línea así funcionará todos los awks.

Hay dos razones por las que su línea awk se comporta de manera diferente en gawk y mawk:

  • tu usado substr() funcionar mal. esta es la causa principal. tu tienes substr($0, 0, RSTART - 1) los 0 debiera ser 1, no importa qué awk uses. awk array, string idx, etc. están basados ​​en 1.

  • gawk y mawk implementados substr() diferentemente.

O simplemente use cortar:

echo aaa0.bbb.ccc | cut -d'.' -f1

Te mostramos las comentarios y valoraciones de los usuarios

Si te gusta la programación, puedes dejar una división acerca de qué te ha gustado de esta crónica.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

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