Script Bash linux parse

gwebmast

Nuovo Utente
5 Gen 2018
5
0
1
30
Ciao a tutti avrei bisogno di una mano per uno script che mi estrae una terna di numeri da un file cosi formato:
### prova.txt ####
riga1
riga 2 argomento 1
riga 3 argomento 3
riga 4 argomento 4
riga 5 argomento 6
ID serial: 9d 42 43 12
riga 6 argomento 7
#################

Sostanzialmente avrei bisogno di un parse che mi scriva in una variabile : 9d424312

Qualcuno ouò darmi una mano?

Grazie
 

linoma

Utente Attivo
1 Mar 2017
79
4
8
Puoi leggere i vari campi cn un codice simile

Codice:
{ s=$(<prova.txt);} 2>/dev/null
while IFS= read str ; do           
   IFS= read -ra ADDR <<< "$str"
   for i in "${ADDR[@]}"; do
       echo $i
   done   
done <<< "$s"
 

gwebmast

Nuovo Utente
5 Gen 2018
5
0
1
30
Puoi leggere i vari campi cn un codice simile

Codice:
{ s=$(<prova.txt);} 2>/dev/null
while IFS= read str ; do          
   IFS= read -ra ADDR <<< "$str"
   for i in "${ADDR[@]}"; do
       echo $i
   done  
done <<< "$s"

Ciao linoma, ho provato ad avviare lo script ma mi da un errore"redirection unexpected"

root@debian:~# ./try.sh
./try.sh: 4: ./try.sh: Syntax error: redirection unexpected

allego il file da analizzare

grazie mille
 

Allegati

linoma

Utente Attivo
1 Mar 2017
79
4
8
da che mondo è mondo nei forums nn si è mai scritto un programma su commissione. Si danno idee, consigli etc etc. Per lavori su commissioni ci sn gli spazi appositi. Saluti Lino
 

gwebmast

Nuovo Utente
5 Gen 2018
5
0
1
30
No Lino, hai mal interpretato le mie intenzioni, ma non è un lavoro, cioè è un aiuto sulla parte di un codice che sto scrivendo e da cui non ne vengo fuori per via della struttura del file degli spazi ecc.. poi su quel parse devo farci delle operazioni è solo per questo che avrei bisogno di una mano, ho gia scritto una parte ma non ho il risultato voluto:

###### try.sh ######
Codice:
FILES_FOUND = prova.txt
local filecount=1
IFS=$'\n'
for i in `cat $FILES_FOUND`
do
    if [ $filecount -eq $fileNumber ]; then
        filename=`echo $i | cut -d: -f1`
        exploreFile2 $filename
    fi
    (( filecount++ ))
#######
Vorrei estrarre in una variabile solo il valore "temp=9d424312"
 
Ultima modifica:

Max 1

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
29 Feb 2012
4.244
322
83
@linoma
Per regolamento del forum quando posti un messaggio devi usare e scrivere in un Italiano corretto, non con parole abbreviate tipo SMS (qui non c'è la necessità di risparmiare caratteri).

@gwebmast
Sempre per regolamento del forum come noi tutti quando inserisci in una discussione del codice sei tenuto ad usare il tag
code.gif
oppure la funzione codice dalla barra degli strumenti
box inserisci 2.png.JPG

Ti prego di correggere i tuoi post

Grazie
 

Max 1

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
29 Feb 2012
4.244
322
83

gwebmast

Nuovo Utente
5 Gen 2018
5
0
1
30
@Max fatto.
@Per i posteri
Ho risolto il problema forse poco elegantemente con:
Codice:
INFILE="prova.txt" 
PATTERN="AID"
IFS=$'\n'
for thisline in $(cat $INFILE); do
  if   [[ $thisline == *"$PATTERN"* ]]; then
    echo $thisline | cut -d ':' -f 2 | tr -d ' '
  fi
done