![]() |
Hej og Velkommen fra USA til UNIX og Linux Forums! Tak for dit besøg og deltager i vores globale samfund.
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Regler | Links | Albums | FAQ | Members List | Kalender | Søgning | Dagens Stillinger | Mark Forums Read |
| Shell Programmering og Scripting Post spørgsmål om ksh, CSH, SH, Bash, Perl, PHP, SED, AWK og ANDRE shell scripts og Shell scriptsprog her. |
Mere UNIX og Linux Forum Emner du måske kan finde Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Last Post |
| fil sammenligning ... hjælpe nødvendigt. | er_ashu | UNIX for dummyer Spørgsmål & svar | 4 | 05-15-2008 09:37 PM |
| Sammenligning Unix og Windows fil sysytem | localp | UNIX for dummyer Spørgsmål & svar | 1 | 04-11-2008 04:02 AM |
| Outputformat - sammenligning med I / p fil | velappangs | Shell Programmering og Scripting | 1 | 04-03-2008 06:31 AM |
| fil sammenligning script | tiger99 | Shell Programmering og Scripting | 1 | 01-30-2008 10:47 AM |
| File Time Sammenligning Spørgsmål | pc9456 | UNIX for Advanced & Ekspertsøgning Brugere | 2 | 07-23-2003 03:05 PM |
![]() |
|
|
LinkBack | Thread Tools | Søg denne tråd | Rate Thread | Display Modes |
|
|
|
||||
|
Filsammenligning
Jeg er nødt til at sammenligne to tekstfiler, meget få af de strækninger i disse filer vil have en vis forskel i nogle kolonne.
De filer størrelse er i GB. Sample linjer som nedenfor: 11111122222222333333aaaaaaaaaabbbbbbbbbccccccccdddddd 11111122222222333333aaaaaaaaaabbbbbbbbbccccccccddeddd Så antager disse to linjer fra file1 og fil2 henholdsvis, jeg burde få den anden fil linje i et nyt outputfil som er forskellen fil. Hvad jeg gerne vil gøre, er at læse Line1 fra file1 og loop gennem alle de linjer i fil2 og stop, når en kamp er fundet, ellers udskrive det, at linje til outputfil. Og gentage de samme trin for alle linjer fra file1. Sætter pris på enhver hjælp i denne henseende. |
|
||||
|
Hvis jeg har forstået, hvad du forsøger at gøre det rigtigt, her er en hurtig 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
|
|
||||
|
som seq (normalt er bosiddende i / usr / bin /)
Det er en individuel eksekverbare kommando; bør være en del af coreutils pakken, hvis du bruger Linux. hvis den findes på dit system, ændre scriptet seq \u003d "/ sti / til / seq" derefter ændre for erklæring at bruge variabel: for i in `$ (seq) ... |
|
||||
|
Citat:
Også seq er ikke en standard kommando i nogle * nix OS. Derfor, hvis du vil bruge sløjfer at sløjfe over en tæller, et stykke tid loop kan anvendes i stedet. f.eks mens [$ num-le $ numlines] |
![]() |
| Bogmærker |
| Tags |
| linux |
| Thread Tools | Søg denne tråd |
| Display Modes | Bedøm denne tråd |
|
|