![]() |
|
|
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 |
| Forvent bufferstørrelsen øker, kan du hjelpe | jaduks | Shell programmering og Skripting | 1 | 10-12-2007 12:07 |
| hvordan du kan øke størrelsen på konsollen skjermen buffer? | the_learner | UNIX for Dummies Spørsmål og svar | 5 | 04-25-2007 06:31 |
| Hvordan øke bufferstørrelsen i Unix | ziabegg | UNIX for Dummies Spørsmål og svar | 3 | 01-05-2007 03:17 |
| Hvordan øke bufferstørrelsen i Unix | ziabegg | UNIX for Advanced & ekspertbrukere | 0 | 12-23-2006 03:11 |
| buffer bufferstørrelsen | gsr_kashyap | Red Hat | 0 | 09-07-2006 02:34 |
![]() |
|
|
LinkBack | Thread Tools | Søk i denne tråden | Rate Thread | Visningsmoduser |
|
|
|
||||
|
Øke bufferstørrelsen å lese lange linjer
Hei Alle, Jeg prøver å lese utdata fra en kommando. Utdataformatet er som følger: Code:
Thursday 13 Mar 2008 Information This is sample text Friday 14 Mar 2008 Warning This is one more sample text Første linje inneholder informtation (dato osv.), og 2. linjen inneholder noe informasjon. Problemet er ofte 2. linje lengde er mer og som leses som to linjer i Unix. Men jeg vil lese dette som en linje selv. Kan vi øke linje bufferstørrelsen i Unix? Jeg håper spørsmålet er klar. Hilsen, Ssunda. |
|
||||
|
Ditt problem er ikke "bufferstørrelsen". Hvis du bruker en kommando som lest en linje av gangen, det vil lese selv lange linjer, men hvis input er mer enn én linje, vil det bare lese den første linjen. Let's rephrase dette problemet. Hvordan vet du når noe er mer enn én linje? Fordi neste linje er da ikke en date stamp. Så du kan lage en enkel parser for dette formatet, som registrerer alt opp til neste dato stemplet som en inngang posten. Dette er trolig best gjøres med et skriptspråk som awk eller Perl eller Python, men bare for skyld argument, her er en rask og skitne løsning i shell script: Code:
#!/bin/sh
date=
input=
nl="
" # yes, that's opening quote, newline, closing quote
while read line; do
case $line in
*day\ [0-9][0-9]\ *\ [12][0-9][0-9][0-9]\ *)
# warning! y3k problem
# warning! fragile matching, would be better with regex
# warning! basically untested code anyway
case $date in '') ;;
*) echo "Result for '$date'":
echo "$input" ;;
esac
input=
date=$line
;;
*)
input="$input${input:+$nl}$line"
;;
esac
done
# whatever is left at end of file is a result too
echo "Result for '$date'":
echo "$input"
|
|
||||
|
Spørsmålet ditt er ikke godt definert. Bufferstørrelsen på hva? Hva kommandoen bruker du til å lese utgang? Hvis det er en grense for hvor lange linjer vil lese, kan du finne en versjon som ikke har en slik grense?
(For eksempel, GNU coreutils verktøy er ofte bedre med hensyn til dette enn hva tilsvarende verktøy levert sammen med kommersielle OS.) |
![]() |
| Hugseliste |
| Tags |
| perl, perl regex, regex |
| Thread Tools | Søk i denne tråden |
| Visningsmoduser | Ranger denne tråden |
|
|