![]() |
|
|
google unix.com
|
|||||||
| Forum | Registrera | Forum Regler | Länkar | Album | FAQ | Medlemslista | Kalender | Söka | Dagens inlägg | Markera forum som lästa |
| Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här. |
Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Senaste Inlägg |
| awk - Räknar antal liknande | dhanamurthy | Shell-programmering och Skript | 8 | 05-16-2008 07:00 |
| Räkna antalet förekomster | kingofprussia | UNIX for Dummies Frågor & Svar | 1 | 04-01-2008 08:11 |
| Jag behöver hjälp med att räkna de områden och området separatorer använder Nawk | scrappycc | Shell-programmering och Skript | 3 | 02-06-2008 11:47 |
| Räkna antalet filer i en katalog | iamalex | UNIX for Dummies Frågor & Svar | 2 | 09-05-2005 11:13 |
| räkna antalet linjer | nayeemmz | Linux | 6 | 01-19-2005 12:37 |
![]() |
|
|
LinkBack | Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
|
|
#1 (permalänk)
|
||||
|
||||
|
Hjälp med att räkna antalet byte i ett område
Hej,
Jag har en fil som har 300 poster med en belastning av områden. två av dem är: field_1 har mellan 8-9 bytes dvs 012345678, 0123456789 field_2 har 10 bytes dvs 01234567890 Jag vill kunna upprepa ut summan av alla dessa områden, dvs 200 (har 8-9 bytes) 100 (har 10 bytes) inte säker på hur man gör detta har jag försökt wc-l: RR \u003d "wc-l kund katalog / fil in.dat" filen i. dat har ett mellanslag i filnamnet? inte säker på om det gör någon skillnad? Jag kan inte få detta att fungera? någon hjälp skulle appreceiated. |
|
#2 (permalänk)
|
||||
|
||||
|
Kod:
awk '{ arr[length($1)]++; arr[length($2)]++; }
END {print "8 - 9 bytes", arr[8]+arr[9], " 10 bytes ", arr[10] } ' file
|
|
#3 (permalänk)
|
||||
|
||||
|
Använd inte awk alls så osäker på hur man skriver detta?
Jag behöver två variabler som kommer att producera 8 -9 byte totalt och 10 byte totala dvs 8-9 \u003d awk '(arr [längd ($ 1)] + +) END (print "8 - 9 bytes", arr [8] + arr [9]) "sökvägen för filen? 10 \u003d awk '(arr [längd ($ 2 )]++;) END (print "10 bytes", arr [10]) "sökvägen för filen? Är detta vad du skulle använda lösningen av Jim??? ![]() |
|
#4 (permalänk)
|
|||||
|
|||||
|
Det använder associativa kedjor, att förstå hur associativa kedjor arbeta i awk, se det här inlägget Det går inte att förstå associativa karaktär awk Arrays Om du kör detta awk-skript, måste du använda det på samma sätt som han kodade, dess enligt dina krav, om du inte vet hur man kör det på kommandoraden och sedan lägga den på något shell-script och kör det fil. Ungefär så här: Kod:
#! /bin/ksh
awk '{ arr[length($1)]++; arr[length($2)]++; }
END {print "8 - 9 bytes", arr[8]+arr[9], " 10 bytes ", arr[10] } ' file
Spara filen shell-script som "test" så gör du följande: Kod:
chmod +x test ./test |