![]() |
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Regler | Links | Albums | FAQ | Members List | Kalender | Søgning | Dagens Stillinger | Mark Forums Read |
| Shell Programmering og Scripting Post spørgsmål om ksh, CSH, SH, Bash, Perl, PHP, SED, AWK og ANDRE shell scripts og Shell scriptsprog her. |
Mere UNIX og Linux Forum Emner du måske kan finde Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Last Post |
| Parse et XML opgaveliste til at skabe hver task.xml fil | MissI | Shell Programmering og Scripting | 3 | 11-11-2008 02:20 PM |
| kommentere og Uncomment enkelt opgave ud af flere opgave | madhusmita | Shell Programmering og Scripting | 9 | 06-18-2008 10:42 AM |
| Aritmetiske Luftfartsforetagender | filda | UNIX for dummyer Spørgsmål & svar | 0 | 06-13-2008 01:55 AM |
| Kan jeg bruge wc-l med aritmetiske udtryk? | lalelle | Shell Programmering og Scripting | 3 | 08-11-2007 07:44 PM |
| aritmetiske i ksh | Amon | Shell Programmering og Scripting | 12 | 02-05-2007 02:43 AM |
![]() |
|
|
LinkBack | Thread Tools | Søg denne tråd | Rate Thread | Display Modes |
|
|
|
||||
|
sed eller awk for aritmetiske opgave
Jeg har fil med denne type af format
01.02.09 08:30 Bob Jill varemærke 01.04.09 07:00 Bob Jill varemærke Tom Jeg vil tælle navne efter den dato / ime line (01.02.09 08:30), og tilføjer, at antallet efter det tidspunkt som dette 01.02.09 08:30 3 01.04.09 07:00 4 Jeg bryder mig ikke om navne, efter at tælle, så jeg kan forlade dem eller fratage den ud med sed hvis det forenkler processen. Jeg kunne også omdirigere outputtet af dato / tid og tælle til anden fil, hvis den gør det enklere. Det eneste jeg virkelig brug for, er den dato, klokkeslæt og nummer på samme linje. Hvad er det bedste redskab til at opnå dette, og nogen, der kan give et eksempel? |
|
||||
|
Næsten det
Nice ...
Jeg var nødt til at tilføje plads til at "" og ændre NF-1 til NF-2 for at få nøjagtigt tal for alle linjer undtagen den sidste og første indrejse. NF-1 giver det korrekte output for den sidste linje tæller kun. Jeg har 9.000 linier, så jeg har den sidste og første fejl er ikke vigtigt spørgsmål. Det næste problem er, at produktionen kun har tid i den linje som denne: 10:00 4 11:00 6 Jeg har brug for den dato i produktionen. I øjeblikket søger gennem nawk manuelle at finde ud af, hvordan man kombinerer tid og dato i output. Enhver hurtig forslag? BTW og løber nawk 1.3.3 fra Ubuntu 8.10 |
|
||||
|
input: 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 output: 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 kode: 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
Senest redigeret af summer_cherry; 02-11-2009 kl 11:54 PM.. |
|
|||||
|
Citat:
mar.txt: Code:
01.02.09 08:30 bob jill mark 01.04.09 07:00 bob jill mark tom nawk 'BEGIN (RS \u003d FS \u003d "") (print $ 1, NF-1)' mar.txt output: Code:
01.02.09 08:30 3 01.04.09 07:00 4 Ser fint til mig. Skriv dit input fil (eller en del af det) ved hjælp af vB kode tags. |
|
||||
|
svar
Bruger de samme data, du havde eksempel, fik jeg følgende:
nawk 'BEGIN (RS \u003d FS \u003d "") (print $ 1, NF-1)' data.txt 0 27 0 31 Tilføjelse af plads til at "" $ Nawk 'BEGIN (RS \u003d FS \u003d "") (print $ 1, NF-1)' data.txt 01.02.09 0 08:30 4 07:00 4 Skift 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 |
![]() |
| Bogmærker |
| Thread Tools | Søg denne tråd |
| Display Modes | Bedøm denne tråd |
|
|