![]() |
|
|
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 |
| lägga till värden i en loop | hcclnoodles | Shell-programmering och Skript | 1 | 05-27-2008 07:42 |
| ersätta kolumnen värden. | charandevu | Shell-programmering och Skript | 6 | 04-02-2008 03:21 |
| hur man läser kolumnen och skriv ut värden under kolumnen | gemini106 | Shell-programmering och Skript | 6 | 03-28-2008 07:05 |
| Så kontrollerar du Null värden i en fil kolumn efter kolumn om kolumnerna är inte NULLs | Mandab | Shell-programmering och Skript | 7 | 03-15-2008 09:57 |
| ersätta en kolumn värdena med det första värdet i kolumnen | sumeet | UNIX för avancerade & Expertanvändare | 3 | 02-06-2007 01:13 |
![]() |
|
|
LinkBack | Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
|
|
||||
|
Hjälp med att lägga till positiva och negativa värden i en kolumn
Hej Gurus,
I min fil som jag har en mängd fält från position 74 till 87, som innehåller värden som börjar med "+" samt "-". Jag vill lägga till alla positiva värden i en varible kallas "kredit" och alla negativa värden i en variabel "DEBET". Jag vet, vi kan använda grep att identifiera värden med positiva och negativa tecken. Men vet inte, hur du lägger dem i 2 olika variabler i ett manus. Finns det något sätt att göra det på kommandoraden? Någon hjälp skulle vara mycket appriciated. Tack! I min fil Belopp området har högerställda värden som, +1345778500000 -327800000 +642307000000 -4300000 +2308007 Dessa värden ser vänster motiveras här på skärmen, men de är faktiskt rätt motiverad i min fil. |
|
||||
|
Kod:
awk ' {
value=substr($0,74,14)
while (substr(value,1,1) == " " ) {value=substr(value,2)}
if(value>0) { plus+=value}
else {minus+=value}
}
END { print plus, minus} ' filename | read credit debit
.. trasslat till rätt motivering ... |
|
||||
|
Tack Jim McNamara för svar. Det fungerar bra, när värdena finns kvar motiverad. Men jag har högerställda värden i filen. Så, "+" eller "-" kan starta vid någon position från 74 till 87 byte.
Hur kan vi använda Längd fungera för att behandla de värden som slutat motiverade, så det ledande utrymmen kan ignoreras? |
|
||||
|
Jag tror, efter att lösa problemet, om jag inte bryr sig om situationen för "+" och "-" tecken i värden. Jag kan bara kontrollera värden> 0 och resten, och enligt den summan dem i 2 olika variabler enligt nedan:
awk '( value \u003d substr ($ 0,74,14) if (value> 0) (plus + \u003d värde) else (minus + \u003d värde) ) END (print plus, minus) 'filename | läsa Kredit Debet |
|
||||
|
Efter fungerar bra,
#! / bin / ksh credit_sum \u003d "awk '(value \u003d substr ($ 0, 74, 14); if (value> 0) (kredit + \u003d värde)) END (print kredit)" filnamn " debit_sum \u003d "awk '(value \u003d substr ($ 0, 74, 14), om (value <0) (debiteringsfullmakt + \u003d värde)) END (print debiteringsfullmakt)" filnamn " exit 0; |