Bash script

di il
1 risposte

Bash script

Salve,
sono una principiante e mi trovo dinanzi a un problema che non riesco a risolvere.

Ho un database molto ampio, così strutturato:
0110241601 23009 D X
ANKE
INEE

0110242325323709 D X
ANKE
INEE

0110250004488909 D X
ANKE
INEE

0110250113598209 D X
ANKE
INEE


Ho bisogno di numerare solo le linee che terminano con "D X", in modo da ottenere:
0110241601 23009 D X 1
ANKE
INEE

0110242325323709 D X 2
ANKE
INEE

0110250004488909 D X 3
ANKE
INEE

0110250113598209 D X 4
ANKE
INEE

Ho scritto il seguente script:
while read -r line; do
if [[ $line == *D*X ]]; then
echo " $counter "
counter=$((counter+1)) >> count
sed "s/\$/'$counter'/"
fi
done < database

Riesco a contare la ricorrenza delle linee che terminano con D X ma non ad aggiungere la corrispettiva numerazione a fine linea.
Qualcuno può aiutarmi?
Grazie tante

1 Risposte

  • Re: Bash script

    UPDATE
    sono riuscita in parte a risolvere il problema modificando lo script:

    word="X"
    awk -v word="$word" '
    {
    for (i = 1; i <= NF; i++)
    if ($i ~ word "([,.;:)]|$)") {
    gsub(word, word "" ++count,$i)
    }
    print
    }' database

    Ma sfortunatamente cosi facendo awk rimuove gli spazi bianchi che separano le diverse colonne del mio database (che variano tra una colonna e l'altra) rendendolo inutilizzabile ai miei fini.
Devi accedere o registrarti per scrivere nel forum
1 risposte