imagen

Ampliación de registros dependiendo de que otros que ya existan de antemano

23.Mar.2023 — Julio

En el almacén quieren optimizar el espacio en las baldas de las estanterías y van a ampliar a 2 ubicaciones más.

A nosotros nos dicen que aquellas baldas que tenga hasta 6 posiciones dentro de ellas, que creemos la posición 7 y 8.

Nos pasan el fichero total de todas sus ubicaciones ya creadas pero no aportan ninguna regla sobre ellas.

input

Al ver el fichero que nos dan vemos que:

  • los registros tienen distinta longitud
  • algunos registros ya terminan en 7, no tenemos que sugerir su creación
  • no todas "las series o patrones" que pudiera deducirse que siguen los registros de ubicaciones tienen hasta posición 6

Nos piden que solo lo que termine en 6 tenemos que crear el registro 7 y 8, a no ser que exista ya.

AWK una vez más con pocas líneas nos las creará:

  el fichero que nos dan lo llamaremos lagp.txt
  lo leemos previamente para saber las que ya existen
  solo si termina en 6 miramos de crear la 7 y 8

```

dos2unix -q lagp.txt
awk '
FNR==NR { lagp[$1]="e"; next}
END {
    for ( ubi in lagp ) {
        lon=length(ubi)
        if ( substr(ubi,lon-1,2) == "06" )
            for ( bandeja=7; bandeja<=8; bandeja++ ) {
                nue=substr(ubi,1,lon-1)bandeja
                if ( lagp[nue] != "e" ) print nue
            }
    }
}' lagp.txt | sort > lagp_nuevas.txt

```

En 1 segundo tenemos todos las ubicaciones nuevas sea cual sea el patrón que tenga cada parte del almacén.

output

Tags: awk, bash

Comments? Tweet