Michele Liberi software

versione 1.03, 1 settembre 2022

Michele Liberi
mail: mliberi@gmail.com
cell: 3485211456

liberix

NCgrep, selezione di righe basata su regole

Il comando NCgrep verifica se una o più stringhe rispettano un determinato insieme di regole.

In qualche modo ricorda il comando UNIX grep, ma non ragiona per espressioni regolari, bensì applicando in sequenza una o più regole.

È in grado di discriminare, con una sola lettura e su file separati, le stringhe che rispettano le regole e quelle che non le rispettano (opzione -y).

Le stringhe da verificare possono essere lette da un file (opzione -f), oppure passate come argomenti.

Le regole da applicare vengono lette da un file (opzione -r). Per una descrizione completa e dettagliata della sintassi del file delle regole lanciare il comando NCgrep -H.

Un insieme di regole consente di suddividere la stringa da verificare in campi di lunghezza fissa. Su ognuno dei campi, in base al tipo, viene attivato uno specifico controllo.

Un file delle regole può contenere più insiemi di regole, ognuno dei quali ha un nome. La selezione di quale set di regole usare viene fatta con l'opzione -D.

tipi di regole
tiposignificato
#commento
Kintroduce un campo chiave, cioè un campo che concorre a formare la una chiave che deve essere univoca nell'intero insieme delle stringhe da verificare
Nintroduce un campo non chiave
Fchiude un set di regole e gli assegna un nome

definizione di campo
campotipocontrollo
Aalfanumericonessuno
Nnumericocomposto da cifre decimali ([0-9])
Lnumericocomposto da cifre decimali con eventuali spazi all'inizio
Cinsieme di caratteritutti i caratteri della stringa devono appartenere all'insieme
Ddatauna data valida
Sstringauna determinata stringa
Evariabile d'ambienteil contenuto di una variabile d'ambiente
Respressione regolareuna stringa che corrisponde alla RE
Tmodelloun modello è formato da lettere, ed ogni lettera corrisponde ad un insieme di caratteri
Osceltauno delle stringhe in un insieme definito

Esempio di file delle regole:

# all lists must be closed by an empty token ''
 
# ------------------------------------------------------------
# Directives:                       parameters
# ............................................................
# F (File)                          list of RE
# S (Set Definition)                CHAR charset-definition
# K (KeyField)                      type len name [parameters]
# N (Normal Field)                  type len name [parameters]
 
# type                              parameters
# ............................................................
# A (Alfanum)                       NONE
# N (Numeric)                       NONE
# L (numeric Leading blank allowed) NONE
# C (Charset)                       charset definition
# D (Date)                          format (must contain dd mm yyyy or yy)
# E (EnvVar)                        Environment variable name
# S (String)                        fixed string
# R (RegExp)                        list of RE
# T (Template)                      list of templates
# O (Oneof)                         list of values
# ------------------------------------------------------------
SetDef H '[0-9A-F]'
SetDef A '[A-Z]'
SetDef B '[01]'
SetDef C '[abc]'
SetDef N '[0-9]'
# ------------------------------------------------------------
# TYPE     LEN NAME                   [PARAM]
# ------------------------------------------------------------
K L  8 codice
N S  1 blank1                         ' '
K N  2 esponente
N S  1 blank2                         ' '
K A 47 commento
N S  1 blank3                         ' '
K O  3 sigla                          '   ' '  a' ' a ' 'a  ' ' aa' 'a a' ' aa'
                                      'aaa' ''
N S  1 blank4                         ' '
K D  6 data                           DDMMYY
F TMP ''
 
N N  8 codice
N S  1 blank1                         ' '
N N  2 esponente
N S  1 blank2                         ' '
N T  5 template                       BCzzz CBwww ''
N R  4 re                             A* *A B*B ''
N C  8 binary                         01
N C  4 HEX                            0-9A-F
N A 31 filler
N D  6 data                           ddmmyy
F TMP1 ''
# ------------------------------------------------------------

Per ulteriori informazioni sulle opzioni disponibili lanciare il comando NCgrep -h.