![]() |
Hallo en welkom van de Verenigde Staten aan de UNIX en Linux Forum! Bedankt voor uw bezoek en Deelnemen aan onze wereldwijde gemeenschap.
|
|
google unix.com
|
|||||||
| Forums | Registreer | Forum Regels | Links | Albums | Veelgestelde vragen | Ledenlijst | Kalender | Zoeken | Today's Posts | Markeer forums als gelezen |
| 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 |
| bestand vergelijking ... hulp nodig. | er_ashu | UNIX voor Dummies Questions & Answers | 4 | 05-15-2008 09:37 PM |
| Vergelijking tussen Unix en Windows-bestand sysytem | localp | UNIX voor Dummies Questions & Answers | 1 | 04-11-2008 04:02 |
| Output formaat - vergelijking met de I / P-bestand | velappangs | Programmeren en Shell Scripting | 1 | 04-03-2008 06:31 |
| bestand vergelijking script | tiger99 | Programmeren en Shell Scripting | 1 | 01-30-2008 10:47 |
| Bestand Tijd Vergelijking Vraag | pc9456 | UNIX for Advanced & Expert Gebruikers | 2 | 07-23-2003 03:05 PM |
![]() |
|
|
LinkBack | Thread Tools | Zoeken in deze Thread | Rate Thread | Display Modes |
|
|
|
||||
|
Bestand Vergelijking
Ik heb te vergelijken twee tekstbestanden, zeer weinig van de regels in deze bestanden hebben sommige verschil in enkele kolom.
De bestanden grootte in GB. Monster lijnen zijn als volgt: 11111122222222333333aaaaaaaaaabbbbbbbbbccccccccdddddd 11111122222222333333aaaaaaaaaabbbbbbbbbccccccccddeddd Dus de veronderstelling dat deze twee lijnen zijn uit bestand1 en bestand2 respectievelijk, ik zou u de tweede bestand lijn in een nieuwe productie-bestand dat is het verschil bestand. Wat ik zou willen doen, is te lezen Lijn1 uit bestand1 en lus door alle lijnen in bestand2 en stopt als er een match is gevonden, anders print hij die lijn naar output bestand. En herhaal deze stappen voor alle lijnen van bestand1. Waardeer alle hulp op dit gebied. |
|
||||
|
Als ik begrijp wat je probeert te doen correct, hier is een snelle bash script.
Code:
#!/bin/bash
compareFile = "/path/to/file/to/compare.txt"
outputFile = "/path/to/outputFile.txt"
for filename in /some/dir/of/text/files/*.txt; do
numlines=`cat $filename | wc -l`
for i in `seq 1 $numlines`; do
current=`cat $filename | head -$i | tail -1`
grep -q "${current}" ${compareFile}
if [ $? != 0 ]; then
#doesn't exist, append to $outputFile
echo "${filename}:${current}" >> ${outputFile}
fi
done
done
|
|
||||
|
die volgende (gewoonlijk verblijft in / usr / bin /)
Het is een individuele uitvoerbare commando; moeten deel uitmaken van de coreutils pakket als u linux. indien aanwezig op uw systeem, wijzigen van het script volgende \u003d "/ pad / naar / volgende" vervolgens voor het wijzigen van de verklaring voor het gebruik van de variabele: for i in `$ (volgende) ... |
|
||||
|
Citaat:
Ook volgende is niet een standaard commando in sommige * nix OS. Als u gebruik wilt maken van lussen die lus over een teller, een tijdje lus kan worden gebruikt. bv terwijl [$ num-le $ numlines] |
![]() |
| Bladwijzers |
| Labels |
| linux |
| Thread Tools | Zoeken in deze Thread |
| Display Modes | Beoordeel deze draad |
|
|