[Risolto] splittare una lista BASH

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Mr_Piada
Prode Principiante
Messaggi: 18
Iscrizione: mercoledì 4 febbraio 2015, 19:57
Sesso: Maschile

[Risolto] splittare una lista BASH

Messaggio da Mr_Piada »

Ciao a tutti.
Ho un problema sicuramente stupido in sostanza devo dividere una lista di file "OK_all.txt" (che contiene circa 2000 righe) in delle liste composte da 50 o 100 elementi.
Questo è lo script che ho scritto:

!/bin/bash

COUNTER=0
while read line
do

for i in {0..20}

echo $COUNTER
if [ expr $COUNTER % 50 ];
then
echo $line >> ${i}.splitted_lists.txt
else
continue
fi
let COUNTER=COUNTER+1

done

done<OK_all.txt


E questo è l'errore:
./split_list.sh: line 9: syntax error near unexpected token `echo'
./split_list.sh: line 9: ` echo $COUNTER'


Qualcuno può dirmi dove sbaglio ?
Ultima modifica di Mr_Piada il sabato 6 febbraio 2016, 20:53, modificato 1 volta in totale.
Avatar utente
jackynet92
Moderatore Globale
Moderatore Globale
Messaggi: 13413
Iscrizione: sabato 3 settembre 2011, 1:41
Desktop: Mate
Distribuzione: Ubuntu 16.04 64bit
Sesso: Maschile
Località: Torino

Re: splittare una lista BASH

Messaggio da jackynet92 »

Per postare correttamente i risultati del terminale e/o listati sul forum basta:
  • 1. selezionare il testo del terminale
    2. tasto destro copia (in alternativa premere Ctrl + maiusc + C)
    3. incollare sul forum negli appropriati code, ovvero selezionare il testo e cliccare su Codice

Codice: Seleziona tutto

[color=#FF0000] qui inserisci il testo [/color][ /code]

[code]in modo da ottenere qualcosa di simile
Provvedi a correggere il post, basta cliccare su modifica e seguire la procedura che ti ho spiegato.
Mr_Piada
Prode Principiante
Messaggi: 18
Iscrizione: mercoledì 4 febbraio 2015, 19:57
Sesso: Maschile

Re: splittare una lista BASH

Messaggio da Mr_Piada »

ok grazie ! :)

Hai anche una risposta alla domanda ? Lol
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: splittare una lista BASH

Messaggio da crap0101 »

Codice: Seleziona tutto

for QUALCOSA; do QUALCOSALTRO; done
com'è formattato questo file? La lista di file che contiene è un file per linea? Perchè in questo caso non fa quello che vorresti... anzi, neanche in altri, per come l'hai scritto scrivi la _stessa_ linea su 20 file diversi... a parte(*) nel caso di

Codice: Seleziona tutto

COUNTER % 50 == 0
, in cui salteresti una scrittura... non so, non ne capisco il senso.
btw se vuoi usare expr togli le [ ] dall'if.
(*)Inoltre l'incremento di COUNTER lo devi fare da un'altra parte, altrimenti raggiunto un numero (come lo zero da cui parti) per cui

Codice: Seleziona tutto

COUNTER % 50 == 0
ti fermi lì, counter non sarà mai più incrementato.

Per finire, c'è split che fa quello che vuoi, al massimo se ti serve che i file abbiano un nome particolare (e come li nomina lui non vanno bene) li rinomini in un secondo tempo.
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Mr_Piada
Prode Principiante
Messaggi: 18
Iscrizione: mercoledì 4 febbraio 2015, 19:57
Sesso: Maschile

Re: splittare una lista BASH

Messaggio da Mr_Piada »

Ottimo consiglio riguardo a tutto.....grazie mille ;)
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 20 ospiti