![]() |
Hei og Velkommen fra USA til UNIX og Linux Forums! Takk for besøket og Delta i vårt globale samfunn.
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Rules | Lenker | Album | FAQ | Medlemsliste | Kalender | Søke | Dagens innlegg | Marker forumene som lest |
| Shell programmering og Skripting Post spørsmål om ksh, csh, SH, Bash, Perl, PHP, SED, awk og ANDRE shell scripts og Shell skriptespråk her. |
Mer UNIX og Linux Forum Emner Du kan finne nyttig
|
||||
| Tråd | Tråd startet | Forum | Svar | Siste innlegg |
| Parse et XML oppgavelisten til å lage hver task.xml fil | MissI | Shell programmering og Skripting | 3 | 11-11-2008 02:20 |
| kommentar og Uncomment enkelt oppgave av flere oppgaver | madhusmita | Shell programmering og Skripting | 9 | 06-18-2008 09:42 |
| Aritmetiske operatorer | filda | UNIX for Dummies Spørsmål og svar | 0 | 06-13-2008 12:55 |
| Kan jeg bruke wc-l med aritmetisk uttrykk? | lalelle | Shell programmering og Skripting | 3 | 08-11-2007 06:44 |
| aritmetikk i ksh | Amon | Shell programmering og Skripting | 12 | 02-05-2007 02:43 |
![]() |
|
|
LinkBack | Thread Tools | Søk i denne tråden | Rate Thread | Visningsmoduser |
|
|
|
||||
|
sed eller awk for aritmetisk oppgave
Jeg har arkiv med denne type format
01.02.09 08:30 Bob jill mark 01.04.09 07:00 Bob jill mark Tom Jeg vil telle navnene etter dato / IME linje (08:30) 01.02.09, og legger til at antallet etter den tid som dette 01.02.09 08:30 3 01.04.09 07:00 4 Jeg bryr meg ikke om navnene etter telle slik at jeg kan forlate dem eller stripe det med sed hvis det forenkler prosessen. Jeg kunne også omdirigere utdataene av dato / tid og telle til andre filen hvis den gjør det enklere. Det eneste jeg virkelig trenger er dato / klokkeslett og tall på samme linje. Hva er det beste verktøyet for å oppnå dette, og kan noen gi et eksempel? |
|
||||
|
Nesten det
Nice ...
Jeg måtte legge plass til "" og endre NF-1 til NF-2 for å få nøyaktige teller for alle linjer unntatt den siste og første oppføring. NF-1 gir riktig utgang for den siste linjen teller bare. Jeg har 9000 linjer, så jeg har det siste og første galt er ikke betydelig problem. Det neste problemet er at produksjonen kun har tid i linjen som dette: 10:00 4 11:00 6 Jeg trenger dato i produksjon. Foreløpig ser gjennom nawk manualen for å finne ut hvordan du kan kombinere tid og dato i produksjon. Noen raske forslag? BTW, kjører nawk 1.3.3 av Ubuntu 8.10 |
|
||||
|
Inngang:
Code:
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 Code:
01.02.09 08:30 3 01.04.09 07:00 4 01.02.09 09:30 6 01.04.09 10:00 7 Code:
#!/usr/bin/perl
$/="\n\n";
open FH,"<a.txt";
while(<FH>){
my @temp=split("\n",$_);
print $temp[0]," ",$#temp,"\n";
}
Code:
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
Sist endret av summer_cherry; 02-11-2009 kl 11:54.. |
|
|||||
|
Sitat:
mar.txt: Code:
01.02.09 08:30 bob jill mark 01.04.09 07:00 bob jill mark tom utgang: Code:
01.02.09 08:30 3 01.04.09 07:00 4 |
|
||||
|
svar
Bruke de samme dataene du hadde eksempel, fikk jeg følgende:
nawk 'BEGIN (RS \u003d FS \u003d "") (print $ 1, NF-1)' data.txt 0 27 0 31 Legge plass til "" $ Nawk 'BEGIN (RS \u003d FS \u003d "") (print $ 1, NF-1)' data.txt 01.02.09 0 08:30 4 07:00 4 Skifte til NF-2 $ Nawk 'BEGIN (RS \u003d FS \u003d "") (print $ 1, NF-2)' data.txt 01.02.09 -1 08:30 3 07:00 3 |
![]() |
| Hugseliste |
| Thread Tools | Søk i denne tråden |
| Visningsmoduser | Ranger denne tråden |
|
|