![]() |
|
|
google unix.com
|
|||||||
| Forum | Registrati | Regole Forum | Collegamenti | Album | FAQ | Members List | Calendario | Ricerca | Today's Posts | Mark Forums Read |
| 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 |
![]() |
|
|
LinkBack | Thread Tools | Cerca in questo Thread | Rate Thread | Modalità di visualizzazione |
|
|
|
||||
|
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 |
|
||||
|
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 |
|
||||
|
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 |
|
||||
|
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
|
![]() |
| Segnalibri |
| Thread Tools | Cerca in questo Thread |
| Modalità di visualizzazione | Vota questo thread |
|
|