![]() |
Ciao e benvenuto da parte degli Stati Uniti al UNIX e Linux Forum! Grazie per la visita ed unirsi alla nostra Comunità Globale.
|
|
google unix.com
|
|||||||
| Forum | Registrati | Regole Forum | Collegamenti | Album | FAQ | Members List | Calendario | Ricerca | Today's Posts | Mark Forums Read |
| 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 |
| Parse XML elenco compito di creare ogni file task.xml | Missi | Shell scripting e di programmazione | 3 | 11-11-2008 02:20 PM |
| commento e Decommentate unico compito di molteplici attività | madhusmita | Shell scripting e di programmazione | 9 | 06-18-2008 09:42 AM |
| Operatori aritmetici | filda | UNIX for Dummies Domande & Risposte | 0 | 06-13-2008 12:55 AM |
| Posso utilizzare wc-l aritmetica con espressione? | lalelle | Shell scripting e di programmazione | 3 | 08-11-2007 06:44 PM |
| aritmetica in ksh | amon | Shell scripting e di programmazione | 12 | 02-05-2007 02:43 AM |
![]() |
|
|
LinkBack | Thread Tools | Cerca in questo Thread | Rate Thread | Modalità di visualizzazione |
|
|
|
||||
|
sed o awk compito di aritmetica
Ho file con questo tipo di formato
01.02.09 08:30 bob sarimah marchio 01.04.09 07:00 bob sarimah marchio tom Voglio contare i nomi dopo la data / ime linea (01.02.09 08:30) e di aggiungere che il numero dopo il momento come questo 01.02.09 08:30 3 01.04.09 07:00 4 Non mi preoccupo di nomi dopo il conteggio in modo che io possa lasciare la striscia di loro o con sed se si semplifica il processo. Potrei anche reindirizzare l'output di data / ora e contare fino a seconda se il file rende più semplice. L'unica cosa che davvero serve è la data e l'ora e il numero sulla stessa linea. Qual è lo strumento migliore per ottenere questo risultato e qualcuno può fornire un esempio? |
|
||||
|
Quasi che
Nizza ...
Ho dovuto aggiungere spazio a "" e cambiare NF-1 a NF-2 per ottenere accurate contare per tutte le linee, tranne l'ultimo e il primo ingresso. NF-1 offre la corretta uscita per l'ultima riga contare solo. Sono 9.000 le linee che hanno così l'ultimo e il primo sbagliato questione non è significativa. Il prossimo problema è che in uscita ha solo il tempo in linea come questa: 10:00 4 11:00 6 Ho bisogno della data di produzione. Attualmente, guardando attraverso il nawk manuale per capire come combinare l'ora e la data in uscita. Qualsiasi rapido suggerimenti? BTW, in esecuzione nawk 1.3.3 da Ubuntu 8,10 |
|
||||
|
ingresso:
Codice:
01.02.09 08:30 bob jill mark 01.04.09 07:00 bob jill mark tom 01.02.09 09:30 bob jill mark hj gh fm 01.04.09 10:00 bob jill mark tom aaa bbb ccc Codice:
01.02.09 08:30 3 01.04.09 07:00 4 01.02.09 09:30 6 01.04.09 10:00 7 Codice:
#!/usr/bin/perl
$/="\n\n";
open FH,"<a.txt";
while(<FH>){
my @temp=split("\n",$_);
print $temp[0]," ",$#temp,"\n";
}
Codice:
awk '/[0-9]*\.[0-9]*\.[0-9]* [0-9][0-9]:[0-9][0-9]/{
a=$0
next
}
/^ *$/{
print a" "n
n=0
next
}
{
n++
}
' a.txt
Ultimo a cura di summer_cherry; al 02/11/2009 11:54 PM.. |
|
|||||
|
Citazione:
mar.txt: Codice:
01.02.09 08:30 bob jill mark 01.04.09 07:00 bob jill mark tom uscita: Codice:
01.02.09 08:30 3 01.04.09 07:00 4 |
|
||||
|
risposta
Utilizzando gli stessi dati che avevate esempio, ho ricevuto il seguente:
nawk 'BEGIN (RS \u003d FS \u003d "") (print $ 1, NF-1)' data.txt 0 27 0 31 Aggiunta di spazio a "" $ Nawk 'BEGIN (RS \u003d FS \u003d "") (print $ 1, NF-1)' data.txt 01.02.09 0 08:30 4 07:00 4 Passaggio a NF-2 $ Nawk 'BEGIN (RS \u003d FS \u003d "") (print $ 1, NF-2)' data.txt 01.02.09 -1 08:30 3 07:00 3 |
![]() |
| Segnalibri |
| Thread Tools | Cerca in questo Thread |
| Modalità di visualizzazione | Vota questo thread |
|
|