![]() |
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 |
| du fra listen med DU af listen samlede | Movomito | Shell Programmering og Scripting | 3 | 05-04-2008 09:33 PM |
| Listen over umatchede kolonner | mohan705 | Shell Programmering og Scripting | 3 | 12-12-2007 10:37 AM |
| Row til Columns | vskr72 | UNIX for dummyer Spørgsmål & svar | 4 | 03-21-2007 09:53 AM |
| hvordan man kan generere en vilkårlig liste fra en given liste | mskcc | Shell Programmering og Scripting | 3 | 05-30-2006 03:30 AM |
| Sammenligning af et særskilt værdi i 1 liste med en anden liste | manualvin | Shell Programmering og Scripting | 6 | 06-22-2004 06:42 AM |
![]() |
|
|
LinkBack | Thread Tools | Søg denne tråd |
Karakter:
|
Display Modes |
|
|
|
||||
|
Liste for at kolonner og awk hjælpe
Hej jeg er ny på dette forum, og jeg er en nybegynder når det kommer til shell programmering og awk programmering. Men jeg har følgende problem:
Jeg har en liste som denne: 1 2 3 4 5 6 7 8 Enten fra en fil eller output fra en kommando. Hvad jeg gerne vil gøre, er at lade disse værdier i x kolonner med værdier i hver kolonne som denne: 1 2 3 4 5 6 7 8 Hvor x angiver, hvor mange kolonner jeg vil gerne. Derefter vil jeg gerne tilføje alle værdier fra kolonne 1 og dividere det med antallet af rækker (i dette tilfælde 2). glemte noget: det er en Bourne shell script. Er det muligt at have x som en variabel input, når du kører scriptet? Eller er det muligt, i stedet for at gøre kolonnerne, til at tilføje hver x element på listen og derefter tage et gennemsnit? Sidst redigeret af Baghera; 08-26-2007 på 01:09 PM.. |
|
||||
|
tilføj alle »x« element
Code:
awk -v var=4 -f sample.awk inputfile Code:
(NR % var ) == 0 { sum+=$0; cnt++}
END {print sum, cnt }
Hvis du ønsker, at regne fra den første kolonne i listen, ændre sample.awk til Code:
BEGIN { row_cnt=1 }
(NR % row_cnt ) == 0 { sum+=$0; cnt++; row_cnt+=var }
END {print sum, cnt }
|
|
||||
|
cat fil | xargs-n <number af poster i en row>
Code:
"/home/tdreader" > cat t.txt 1 2 3 4 5 6 7 8 9 12 12 32 5 66 56 343 8 875 434 0 "/home/tdreader" > cat t.txt | xargs -n 3 1 2 3 4 5 6 7 8 9 12 12 32 5 66 56 343 8 875 434 0 gå til dette Code:
cat filename | tr '\n' ' ' | xargs -n 3 |
|
||||
|
Jeg virkelig sætter pris på hjælpen.
Jeg kan godt lide xargs ting. Er det så muligt at tilføje de enkelte elementer i en kolonne og dividere det med antallet af elementer i kolonnen. Jeg har brugt denne kommando: awk '(sum + \u003d $ 1 / 2) (sum1 + \u003d $ 2 / 2) END (print sum sum1)' Men $ 1 / 2, hvor de 2 skal være en variabel (antallet af elementer i kolonnen). Også ranj @ chn jeg ikke få dit script til at arbejde, jeg skal gøre noget forkert. Jeg har lige kopieret hvad du skrev og forsøgte at køre det med: awk-v var \u003d 2-f reader2.awk testfile.txt Men jeg kun få fejl. Og jeg har også prøvet at køre ahmedwaseem2000's program, men jeg ikke få det til at arbejde enten. Jeg virkelig ked af, men jeg er en virkelig "noob" på dette. Men den hjælp du har givet mig er uvurderlig. |
|
||||
|
Citat:
Citat:
DU BEHOV FOR AT ANSAETTE værdi på "INPUT" variabel, før du kører koden andet vil det give dig "division med nul i modul" gerne køre INPUT \u003d 4, før du kører koden. |
![]() |
| Bogmærker |
| Tags |
| linux |
| Thread Tools | Søg denne tråd |
| Display Modes | Bedøm denne tråd |
|
|