The UNIX and Linux Forums  


Go Back   De Unix-en Linux Forum > Top Forums > Programmeren en Shell Scripting
.
google unix.com



Programmeren en Shell Scripting Post vragen over KSH, CSH, SH, Bash, Perl, PHP, sed, awk en andere shell scripts en shell scripting talen hier.

Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
Draad Thread Starter Forum Antwoorden Last Post
Het toevoegen van kolommen van twee bestanden chandra321 Programmeren en Shell Scripting 7 05-06-2009 01:11 PM
Vergelijking van soortgelijke kolommen in twee verschillende bestanden ragavhere Programmeren en Shell Scripting 13 04-16-2008 09:53
Vergelijking van de gemeenschappelijke kolommen van een tabel in twee bestanden ragavhere SUN Solaris 1 04-11-2008 09:41
Kolommen vergelijken van twee bestanden ggopal Programmeren en Shell Scripting 4 02-21-2007 08:06 PM
Kolommen vergelijken van twee bestanden ggopal UNIX for Advanced & Expert Gebruikers 1 02-17-2007 04:11

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Zoeken in deze Thread Rate Thread Display Modes
  #1 (permalink)  
Old 06-05-2008
oabdalla oabdalla is offline
Geregistreerde gebruiker
  
 

Join Date: juni 2008
Posten: 2
het vergelijken van bestanden - toevoeging / aftrekken / kolommen opmaken

Ik heb twee bestanden:
file1.txt:
FS Totaal FTA Gebruikt gebruikt%
/ U01 10000 8000 2000 80%
/ U02 10000 8000 2000 80%
/ U03 10000 8000 2000 80%
/ U04 10000 8000 2000 80%
/ u05 10000 8000 2000 80%
/ u06 10000 8000 2000 80%
/ u07 10000 8000 2000 80%
/ U10 10000 5000 5000 50%

file2.txt:
FS Adj
/ U01 1500
/ u05 500
/ U10 2500

Ik wil ze te vergelijken met de eerste kolom in elk bestand en een output van beide dat eruit ziet als het volgende te maken:

FS totaal gebruikte + Adj Free-Adj (Gebruikt + Adj) / Totaal
-------- --------- --------- --------- ---------
/ U01 10.000 9.500 500 95%
/ U02 10.000 8.000 2.000 80%
/ U03 10.000 8.000 2.000 80%
/ U04 10.000 8.000 2.000 80%
/ u05 10.000 8.500 1.500 85%
/ u06 10.000 8.000 2.000 80%
/ u07 10.000 7.500 2.500 75%

Let op dat alle lijnen van file1.txt zijn vermeld, en de kolom "ADJ" van bestand2.txt wordt toegevoegd aan de kolom "Gebruikt" en afgetrokken van de kolom "Free" van file1.txt alleen als er een wedstrijd.

Ik was in staat om dit verslag alleen te produceren na het laden van deze bestanden in een database, maar ik weet zeker dat ik het kan met behulp van shell scripting met uw hulp.

Bedankt,
Omer
  #2 (permalink)  
Old 06-05-2008
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
addict
  
 

Join Date: Jan 2007
Locatie: Варна, България / Milano, Italia
Berichten: 2.926
U kunt gebruik maken van zoiets als dit:
(gebruik nawk of / usr/xpg4/bin/awk op Solaris)


Code:
awk 'NR == FNR { 
  sub(/,/, "")
  _[$1] = $2 
  next 
  }
FNR == 1 { 
  printf "%4s %5s %8s %8s %14s\n", 
  "FS", "Total", "Used+Adj", "Free-Adj", "(Used+Adj)/Total"
  while (++i < 46) printf "-"
  print ""
  next
  }           
$1 in _ { 
  $3 += _[$1]
  $4 -= _[$1] 
  $5 = $3/$2*100 
  }
{
  printf "%4s %5d %8d %8d %14d%\n",
  $1, $2, $3, $4, $5
  }' file2.txt file1.txt

  #3 (permalink)  
Old 06-06-2008
oabdalla oabdalla is offline
Geregistreerde gebruiker
  
 

Join Date: juni 2008
Posten: 2
Dank u, radoulov, voor uw snelle en elegent script. Het werkt perfect.
Alles wat ik nu moet doen is de indeling van het verslag mooi dus het is beter leesbaar, maar ik denk dat ik kan dat uit figuur.

Appreciate it

Omer
  #4 (permalink)  
Old 06-11-2008
vakharia Mahesh vakharia Mahesh is offline
Geregistreerde gebruiker
  
 

Join Date: Feb 2007
Posts: 51
Question vergelijken van de bestanden, enz.

Hi Radoulov,
Ik heb je script. Eloborate Kunt u voor mij naar kennis. Bedankt.
  #5 (permalink)  
Old 06-11-2008
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
addict
  
 

Join Date: Jan 2007
Locatie: Варна, България / Milano, Italia
Berichten: 2.926
Citaat:
Oorspronkelijk geplaatst door vakharia Mahesh View Post
[...]
Kunt u voor mij eloborate voor kennis
Zeker.


Code:
NR == FNR

De bovenstaande formule geeft waar alleen tijdens het verwerken van de eerste ingang bestand (file2). Dus, de bijbehorende maatregelen zijn:


Code:
{ 
  sub(/,/, "")
  _[$1] = $2 
  next 
  }

Strip de duizenden afscheider, bevolken een associatieve array _met $ 1 als sleutels $ 2 als waarden, dus gezien de input zal worden:


Code:
key -> "/u01" value -> 1500
key -> "/u05" value -> 500
key -> "/u10" value -> 2500

De volgende verklaring krachten awk om te stoppen met de verwerking van de huidige record dus geen verdere regels / acties zullen worden uitgevoerd dit record. Dit betekent dat de volgende acties niet zal de eerste input file proces.


Code:
FNR == 1

FNR is het aantal records die zijn zo ver van de huidige ingang bestand te lezen (de tweede input bestand in dit geval). Dus, terwijl de verwerking van de eerste record van de tweede input file:


Code:
{ 
  printf "%4s %5s %8s %8s %14s\n", 
  "FS", "Total", "Used+Adj", "Free-Adj", "(Used+Adj)/Total"
  while (++i < 46) printf "-"
  print ""
  next
  }

Print de header kolommen en ga naar de volgende record.


Code:
$1 in _ { 
  $3 += _[$1]
  $4 -= _[$1] 
  $5 = $3/$2*100 
  }

De uitdrukking toets array Geeft TRUE terug als de aangegeven sleutel bestaat in de aangegeven array. Voor deze registers het volgende doen:
- Voeg de waarde _ [$ 1] van de desbetreffende toets $ 1 de derde kolom
- Aftrekken van de waarde _ [$ 1] van de desbetreffende toets $ 1 de vierde kolom
- Berekening van de waarde van de vijfde kolom


Code:
{
  printf "%4s %5d %8d %8d %14d%\n",
  $1, $2, $3, $4, $5
  }

Druk de nieuwe waarden.


Hoop dat dit helpt.
  #6 (permalink)  
Old 06-12-2008
vakharia Mahesh vakharia Mahesh is offline
Geregistreerde gebruiker
  
 

Join Date: Feb 2007
Posts: 51
Thumbs up Het vergelijken van bestanden

SIMPLY SUPERB! NO WORDSSSSSSSS volstaat uw manier van
Uitleg. Bundels van dank van diepst van mijn HEART.Let mij
zeggen te begrijpen is somthing en uit te leggen in de eenvoud die meer
cumbersome.Once weer Thanx.
Cheers Dimitri.
  #7 (permalink)  
Old 06-12-2008
vakharia Mahesh vakharia Mahesh is offline
Geregistreerde gebruiker
  
 

Join Date: Feb 2007
Posts: 51
Thumbs up Het vergelijken van bestanden

Net nu ik geschreven heb, maar het antwoord lijkt over geen enkele waar,

Geachte Radlouv
Bundels van dank aan u voor het uitleggen van de code in zeer eenvoudige termijn.
No way, maar gewoon SUPERB. Geen woord zal volstaan. Weten is iets
maar om uit te leggen in eenvoudige wrods vereist grote insite.

Thanx nogmaals. Cheers Up.
Closed Thread

Bladwijzers

Labels
solaris

Thread Tools Zoeken in deze Thread
Zoeken in deze Thread:

Uitgebreid zoeken
Display Modes Beoordeel deze draad
Beoordeel deze draad:

Posting Regels
Jij mag niet Post Nieuwe threads
Jij mag niet na antwoorden
Jij mag niet post attachments
Jij mag niet bewerk uw berichten

BB code is Aan
Smilies zijn Aan
[IMG] code Aan
HTML-code is Uit
Trackbacks zijn Aan
Pingbacks zijn Aan
Refbacks zijn Aan




Alle tijden zijn GMT -4. Het is nu 05:32 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Vertalingen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
De Unix-en Linux Forums Copyright © 1993-2009. Alle rechten Reserved.Ad Beheer door RedTyger

Content Relevante URL's door vBSEO 3.2.0