PDA

Visualizza la versione completa : [bash]Assegnare variabile ed editare stringhe


Mac@
15-11-2008, 15:30
Ciao a tutti!
Ho un file di questo genere:


>testo1;
ABCDE ABBCD EEAAA ABCDE ABBCD EEAAA ABCDE ABBCD EEAAA ABCDE ABBCD EEAAA ABCDE ABBCD EEAAA ABCDE ABBCD EEAAA ABCDE ABBCD EEAAA ABCDE ABBCD EEAAA ABCDE ABBCD EEAAA ABCDE ABBCD EEAAA ABCDE ABBCD EEAAA ABCDE ABBCD EEAAA ABCDE ABBCD EEAAA ABCDE ABBCD EEAAA ABCDE ABBCD EEAAA
>testo2 :---xYZ ;
AAAAC CCBAE AAAAC CCBAE AAAAC CCBAE AAAAC CCBAE AAAAC CCBAE AAAAC CCBAE AAAAC CCBAE AAAAC CCBAE AAAAC CCBAE AAAAC CCBAE AAAAC CCBAE AAAAC CCBAE AAAAC CCBAE AAAAC CCBAE AAAAC CCBAE AAAAC CCBAE AAAAC CCBAE AAAAC CCBAE AAAAC CCBAE AAAAC CCBAE AAAAC CCBAE AAAAC CCBAE AAAAC
....eccetera, così ripetuti...

Attraverso dei comandi bash (cat, grep eccetera), devo:
1-aprire il file e leggerlo
2-eliminare da ciò che ricavo le righe che iniziano con > e finiscono con ;
3-creare una percentuale di quante A ci sono ( ad esempio 20%), quante B, quante C, quante E (e così via per tutte le lettere che voglio inserire) e stamparle a schermo.

Riesco a crearlo in php, c, e altri ma in bash proprio sono una capra @.@
Per contare utilizzo una serie di grep e sed, ma poi come assegno questo valore (ad esempio trovate 45 A e 20 B) ad una variabile?

Come posso fare?
Grazie ^_^

detroit
15-11-2008, 20:33
posta il codice php giusto per farci un'idea

Mac@
15-11-2008, 21:47
Con php faccio una semplice sostituzione tramite espressioni regolari della stringa che inizia > e finisce con ; , poi conto semplidcemente le lettere :)

cacao74
16-11-2008, 00:06
visto che riesci a contare con sed e grep...

un banale


a=$(codice1)
b=$(codice2)

assegna ad "a" e "b" i valori numerici dei tuo calcoli

man bash

ciao

Mac@
16-11-2008, 15:12
Ok ;)
Perfetto :)

Ora però mi rimane un problema:


tot=$(cat prova.txt | sed -n "/^[A-Za-z0-9]/p") #apre prova.txt (contenente tutto)e ne seleziona le righe che iniziano con LETTERE, lettere, numeri 0-9
echo $tot>totale.txt #salva nel file totale.txt tutto
#Fin qui tutto Ok, funziona alla grande!
#ma ora, dovrebbe contare tutte le occorrenze della lettera A nel file salvato:
a = $(cat totale.txt | grep -w -e 'A' | sed 's/A/A\
/g' | grep -w -e 'A' | wc -l)
echo $a
#qua mi da errore alla linea in cui uso cat


Come posso risolvere?

cacao74
16-11-2008, 15:32
non mettere spazi tra nome variabile, il carattere uguale "=" ed il valore da assegnare


a = 10 ERRATO
a=10 ESATTO

ciao

Loading