The UNIX and Linux Forums  

Go Back   UNIX e Linux Forum > Inizio Forum > Shell scripting e di programmazione
.
google unix.com



Shell scripting e di programmazione Pubblica domande su KSH, CSH, SH, Bash, Perl, PHP, sed, awk e da altri script di shell e linguaggi di scripting shell qui.

Più di UNIX e Linux Forum Argomenti potreste trovare utili
Filo Thread Starter Forum Risposte Ultimo Post
Split file di grandi dimensioni e aggiungere intestazione e pie 'di pagina di ogni file ashish4422 Shell scripting e di programmazione 1 04-15-2008 07:12 AM
Split di un file senza alcun motivo - Spalato, Csplit, Awk madhunk UNIX for Dummies Domande & Risposte 10 12-17-2007 12:57 PM
dividere il nome del file rinku Shell scripting e di programmazione 1 05-28-2007 02:47 AM
Serve per dividere il file getdpg Shell scripting e di programmazione 11 09-04-2006 04:08 AM
Come si divide il file da tag all'interno del file? spookyrtd99 Shell scripting e di programmazione 1 07-31-2006 01:50 AM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Cerca in questo Thread Rate Thread Modalità di visualizzazione
  #1 (permalink)  
Old 07-20-2004
pvar pvar is offline
Utente Registrato
  
 

Iscriviti Data: febbraio 2004
Località: MI, Stati Uniti d'America
Interventi: 12
Split file utilizzando awk

Sto cercando di leggere un file e dividere il file in più file. Ho bisogno di creare nuovi file con diverse serie di linee di file originale. vale a dire, il primo file di output può contenere 10 linee e 100, secondo le linee e così via. I criteri per ottenere le righe tra due righe che iniziano con alcuni caratteri (variabile)

ad es. Un esempio di file di input

DOC100
aaaaaa
bbbbbb
cccccccc
FINE
DOC200
ddddddd
eeeeeee
FINE

Ho bisogno di inviare le righe e tra DOC100 FINE per out.1
e tra le linee e la prossima DOC200 FINE per out.2

Ho pensato che potesse farlo usando awk e ho provato il seguente comando, ma non ha funzionato.

k \u003d grep DOC $ nomefile | cut-c4-6
awk-v cn \u003d $ k '/ cn DOC $ /, / FINE / (print $ 0)' $ nomefile> $ outfile

Can anyone help me su questo? Grazie
  #2 (permalink)  
Old 07-20-2004
zazzybob's Avatar
zazzybob zazzybob is offline Forum Advisor  
Registrato Geek
  
 

Iscriviti Data: dicembre 2003
Località: Melbourne, Australia
Interventi: 2.100
Uno script di questo tipo il nome del file out.100, out.200 dove il numero corrisponde a ciò che segue "DOC"


Codice:
#!/bin/sh

while read line
do
   if echo $line | grep DOC; then
       line_no=`echo $line | sed 's/DOC\([0-9]*\)/\1/g'`
   elif echo $line | grep END; then
       : #ignore
   else
       echo $line >> out.$line_no
   fi
done < file.txt

Dove file.txt contiene i dati.

Questo è uno script veloce e non c'è spazio per ulteriori miglioramenti, ma si ottiene l'idea.

Salute
ZB
  #3 (permalink)  
Old 07-21-2004
Ygor's Avatar
Ygor Ygor is offline Forum Staff  
Moderatore
  
 

Iscriviti Data: ottobre 2003
Ubicazione: -31.96,115.84
Messaggi: 1.409
Uso awk ..
Codice:
awk '/^DOC/{f=$1} f{print > f} /^END/{close f}' infile

  #4 (permalink)  
Old 07-21-2004
pvar pvar is offline
Utente Registrato
  
 

Iscriviti Data: febbraio 2004
Località: MI, Stati Uniti d'America
Interventi: 12
Grazie zazzybob e Ygor per il vostro aiuto. Ma io vedo qualche problema con ciascuno dei vostri script.

zazzybob di script - Prima di tutto ho un file di dati di lunghezza fissa che ho bisogno di dividere. Lo script crea file separati con il dati ma ignora gli spazi nei campi, significa che concatena i campi lasciando fuori gli spazi in essi.

Ygor's script - Il tuo script crea solo un file DOC con il nome di dati tra l'ultimo DOC / FINE. Ma i dati si pone come quello che si trova nel file di input, che è un buon segno.
  #5 (permalink)  
Old 07-21-2004
zazzybob's Avatar
zazzybob zazzybob is offline Forum Advisor  
Registrato Geek
  
 

Iscriviti Data: dicembre 2003
Località: Melbourne, Australia
Interventi: 2.100
Per risolvere il problema con la sceneggiatura ho postato, appena ha messo tra virgolette la "$ line", thusly

Codice:
echo "$line" >> out.$line_no

Ciò preservare gli spazi

Salute
ZB
  #6 (permalink)  
Old 07-21-2004
Ygor's Avatar
Ygor Ygor is offline Forum Staff  
Moderatore
  
 

Iscriviti Data: ottobre 2003
Ubicazione: -31.96,115.84
Messaggi: 1.409
Non ho letto il po 'di nomi di file come "doc.1" prima. Prova questo, invece ...
Codice:
awk '/^DOC/{f="doc."++d} f{print > f} /^END/{close f; f=""}' infile

$ Doc testa -1000000 .*
\u003d\u003d> Doc.1 <\u003d\u003d
DOC100
aaaaaa
bbbbbb
cccccccc
FINE

\u003d\u003d> Doc.2 <\u003d\u003d
DOC200
ddddddd
eeeeeee
FINE
  #7 (permalink)  
Old 07-21-2004
pvar pvar is offline
Utente Registrato
  
 

Iscriviti Data: febbraio 2004
Località: MI, Stati Uniti d'America
Interventi: 12
zazzybob's script funziona bene ora.

Ygor's script ancora un problema. Essa crea i file separati, ma ora mette le righe che iniziano con DOC & FINE anche nel file di output. Ho solo bisogno di dati tra le linee.

Agin Grazie per l'aiuto.
Closed Thread

Segnalibri

Thread Tools Cerca in questo Thread
Cerca in questo Thread:

Ricerca Avanzata
Modalità di visualizzazione Vota questo thread
Vota questo thread:

Distacco regolamento
Tu non può post nuovo thread
Tu non può inviare una risposta
Tu non può postare allegati
Tu non può modificare i tuoi post

BB codice è Su
Smilies sono Su
[IMG] codice Su
Codice HTML è Chiuso
Trackbacks sono Su
Pingbacks sono Su
Refbacks sono Su




Tutti gli orari sono GMT -4. La data di oggi è 01:15 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traduzioni Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX e Linux Forum Content Copyright © 1993-2009. Tutti i diritti Reserved.Ad di gestione da RedTyger

Contenuti pertinenti URL da vBSEO 3.2.0