The UNIX and Linux Forums  

Go Back   UNIX e Linux Forum > Inizio Forum > Shell scripting e di programmazione
.
google unix.com



Shell scripting e di programmazione Pubblica domande su KSH, CSH, SH, Bash, Perl, PHP, sed, awk e da altri script di shell e linguaggi di scripting shell qui.

Più di UNIX e Linux Forum Argomenti potreste trovare utili
Filo Thread Starter Forum Risposte Ultimo Post
confrontare due file e per rimuovere le corrispondenti linee su entrambi i file shellscripter Shell scripting e di programmazione 4 06-20-2009 09:48 AM
stringa in corrispondenza delle due file di diversa lunghezza ad_meis Shell scripting e di programmazione 2 05-19-2009 11:49 AM
Corrispondenti e che unisce due file sickboy Shell scripting e di programmazione 3 07-17-2008 01:20 PM
Corrispondenti e che unisce due file p3t3r Shell scripting e di programmazione 5 05-20-2008 11:16 AM
Trova corrispondenti linee tra i 2 file jojojmac5 UNIX for Dummies Domande & Risposte 5 01-18-2007 01:06 PM

Reply
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Cerca in questo Thread Rate Thread Modalità di visualizzazione
  #1 (permalink)  
Old 07-01-2009
kylle345 kylle345 is offline
Utente Registrato
  
 

Iscriviti Data: maggio 2009
Interventi: 53
Abbinamento 2 file

Salve,

Sono in grado di modificare i file (un file), ma faccio fatica a lavorare con più file contemporaneamente.

Così ho due file. Fondamentalmente voglio corrispondono due file di colonne in base a determinati. I due file sono scheda-seperated.

File1 sembra qualcosa di simile a questo:

Codice:
num1  89  george
num4  78  bob

File 2 è un file molto più grande e guarda somethign come questo:

Codice:
num1  3    lion
num1  13  tiger
num1  84  bear
num4  3    house
num4  19  dog
num4  77  mouse

Quindi, quello che voglio fare è partita da Files1 colonna 1 e 2. Voglio anche sottrarre colonna 2 da entrambi i file. Quindi, se si tratta di una partita, voglio stampa (in un file separato) la riga con la più piccola differenza per la colonna 2.

Quindi, per il mio esempio di sopra, il file di output sarà simile questo

num1 5 george recare
num4 1 bob mouse


grazie

Ultimo a cura di Yogesh Sawant; al 07/05/2009 11:29 AM.. Motivo: aggiunto codice tag
  #2 (permalink)  
Old 07-02-2009
rakeshawasthi rakeshawasthi is offline
Utente Registrato
  
 

Join Date: Aug 2004
Località: India
Messaggi: 379
Che cosa hai provato finora?
  #3 (permalink)  
Old 07-02-2009
lathavim lathavim is offline
Utente Registrato
  
 

Iscriviti Data: giugno 2009
Interventi: 73
Vedi se questo aiuta.

Codice:
while read value1
do
a=`echo $value1 | cut -d ' ' -f1`
b=`echo $value1 | cut -d ' ' -f2`
c=`echo $value1 | cut -d ' ' -f3`
while read value2
do
a1=`echo $value2 | cut -d ' ' -f1`
b1=`echo $value2 | cut -d ' ' -f2`
c1=`echo $value2 | cut -d ' ' -f3`
if [ "$a" = "$a1" ]
then
b2=`expr $b - $b1`
echo $a $b2 $c $c1 >>outfile
fi
done<file2
done <file1
sort -o outfile2 -2 outfile
while read out1
do
x=`echo $out1 | cut -d ' ' -f1`
grep $x outfile2 | head -1 >>finalout
grep -v $x outfile2 >tmp
mv tmp outfile2
done<outfile2


Ultimo a cura di Yogesh Sawant; al 07/05/2009 11:28 AM.. Motivo: aggiunto codice tag
  #4 (permalink)  
Old 07-02-2009
palsevlohit_123 palsevlohit_123 is offline
Utente Registrato
  
 

Join Date: Aug 2008
Località: India-Chennai
Interventi: 120
Prova questo ...



Codice:
while read value1
do
        a=`echo $value1 | cut -d ' ' -f1`
        b=`echo $value1 | cut -d ' ' -f2`
        c=`echo $value1 | cut -d ' ' -f3`
        x=`grep "$a" file2|sort -nr -k2,2|head -1|cut -d' ' -f1`
        y=`grep "$a" file2|sort -nr -k2,2|head -1|cut -d' ' -f2`
        z=`grep "$a" file2|sort -nr -k2,2|head -1|cut -d' ' -f3`
        Diff=`expr $b - $y`
        echo "$a $Diff $c $z" >>outfile
done <file1

Nota:
file1 - il vostro primo file
file2 - il secondo file
outfile - il risultato di file
  #5 (permalink)  
Old 07-02-2009
rakeshawasthi rakeshawasthi is offline
Utente Registrato
  
 

Join Date: Aug 2004
Località: India
Messaggi: 379
Ho avuto la soluzione pronta, ma lei ha voluto dargli un'occhiata ...

Codice:
find_corresponding_least_val()
{
   cat file2 | grep "$_key" | awk '{
      if((val-$2) < _diff) {
         _diff=val-$2; args=$3
      }
      else
         _diff=val-$2
   }
      END {
         printf("%s\t%s\t%s\n", key, _diff, args)
   }' key="$_key" val="$_val"
}

while read line
do
   _key=`echo $line | awk '{print $1}`
   _val=`echo $line | awk '{print $2}`
   _args=`echo $line | awk '{print $3}`
   find_corresponding_least_val $_key $_val
done < file1

Reply

Segnalibri

Thread Tools Cerca in questo Thread
Cerca in questo Thread:

Ricerca Avanzata
Modalità di visualizzazione Vota questo thread
Vota questo thread:

Distacco regolamento
Tu non può post nuovo thread
Tu non può inviare una risposta
Tu non può postare allegati
Tu non può modificare i tuoi post

BB codice è Su
Smilies sono Su
[IMG] codice Su
Codice HTML è Chiuso
Trackbacks sono Su
Pingbacks sono Su
Refbacks sono Su




Tutti gli orari sono GMT -4. La data di oggi è 08:26 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traduzioni Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX e Linux Forum Content Copyright © 1993-2009. Tutti i diritti Reserved.Ad di gestione da RedTyger

Contenuti pertinenti URL da vBSEO 3.2.0