![]() |
Hej og Velkommen fra USA til UNIX og Linux Forums! Tak for dit besøg og deltager i vores globale samfund.
|
|
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 |
| Forventer bufferstørrelsen stigning, kan du hjælpe | jaduks | Shell Programmering og Scripting | 1 | 10-12-2007 12:07 PM |
| hvordan man kan øge størrelsen af konsollen skærmen buffer? | the_learner | UNIX for dummyer Spørgsmål & svar | 5 | 04-25-2007 06:31 PM |
| Hvordan kan man øge bufferstørrelsen i Unix | ziabegg | UNIX for dummyer Spørgsmål & svar | 3 | 01-05-2007 03:17 PM |
| Sådan øge bufferstørrelsen i Unix | ziabegg | UNIX for Advanced & Ekspertsøgning Brugere | 0 | 12-23-2006 03:11 AM |
| buffer cachestørrelse | gsr_kashyap | Red Hat | 0 | 09-07-2006 02:34 AM |
![]() |
|
|
LinkBack | Thread Tools | Søg denne tråd | Rate Thread | Display Modes |
|
|
|
||||
|
Øge bufferstørrelsen at læse lange linjer
Hi All,
Jeg forsøger at læse output fra en kommando. Outputformatet 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 Problemet er nogle gange den 2. Line's længde er større, og at der bliver læst som to linjer i Unix. Men jeg vil læse det som en linje selv. Kan vi øge linje bufferstørrelsen i Unix? Jeg håber spørgsmålet er klart. Hilsen, Ssunda. |
|
||||
|
Dit problem er ikke "buffer size". Hvis du bruger en kommando der lyder en linje i en tid, det vil læse selv lange linjer, men hvis input er mere end én linje, vil det kun læst den første linje.
Lad os omformulere dette problem. Hvordan kan du vide, hvornår noget er mere end én linje? Da den næste linje er så ikke en dato stempel. Så kan du oprette en simpel parser til dette format, som genkender alt op til næste date stempel som et input record. Dette er formentlig bedst sker med et scriptsprog såsom awk eller Perl eller Python, men blot for at argumentet om, her er en hurtig og beskidt oplø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"
|
|
||||
|
Dit spørgsmål er ikke veldefineret. Bufferstørrelsen af hvad? Hvad kommando bruger du til at læse output? Hvis den har en grænse for, hvor lange linjer vil læse, kan du finde en version, der ikke har en sådan grænse?
(For eksempel er GNU coreutils værktøjer er ofte bedre i denne henseende end hvad tilsvarende værktøjer leveres med dine kommercielle OS.) |
![]() |
| Bogmærker |
| Tags |
| perl, perl regex, regex |
| Thread Tools | Søg denne tråd |
| Display Modes | Bedøm denne tråd |
|
|