webForumDet fria alternativet

Gämföra två textfiler och få ut raderna där det skiljer sig något.

ASP

11 svar · 509 visningar · startad av mattiasnordin

Medlem sedan maj 20012 080 inlägg
Frågan#1

Finns det något smidigt sätt att gämföra två stycken textfiler och ta reda på vilken/vilka rader som skiljer sig?

:q

Medlem sedan nov. 20017 144 inlägg
#2

Använd tex fso och loopa igenom varje rad för sig och använd strComp för att ta ut skillnader mellan raderna.

Medlem sedan maj 20012 080 inlägg
#3

Antar att det finns andra sätt att lösa det på men så här blev det:

<%
' Set up constants
Const ForReading = 1 
Const Create = False
' Declare local variables
Dim objFSO         ' FileSystemObject
Dim TS             ' TextStreamObject
Dim strLine        ' local variable to store Line
Dim strFileName    ' local variable to store fileName

strFileName = Server.MapPath("test.txt")
srtFileNameOrg = Server.MapPath("test2.txt")

' Instantiate the FileSystemObject
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

' use Opentextfile Method to Open the text File
Set TSOrg = objFSO.OpenTextFile(srtFileNameOrg, ForReading, Create)

'Gör en sträng av orgnaldokumentet
If Not TSOrg.AtEndOfStream Then 	
	Do While Not TSOrg.AtendOfStream 									'Loopar igenom Orgianldokumentet
		varOrgPageString = varOrgPageString &TSOrg.ReadLine &";"
	loop
End If

'KONTROLLERAR OM STRÄNGAR HAR BLIVIT FÖRÄNDRADE
Set TS = objFSO.OpenTextFile(strFileName, ForReading, Create)
If Not TS.AtEndOfStream Then 	
	Do While Not TS.AtendOfStream 									'Loopar igenom Orgianldokumentet
		varNewLineNumber = TS.Line								'Hämtar textens radnummer
		varNewLineText = TS.ReadLine							'När man anropar denna så byts rad autmatiskt
		if InStr(varOrgPageString, varNewLineText) > 0 then 	'Letar om strängen finns med på sidan. Korta sökningar blir inte så exakta
			'response.write("Finner = <font color=green>" &varNewLineNumber &" - [" &varNewLineText &"]</font><br>") 
			varHtmlOutputString = varHtmlOutputString &varNewLineNumber &": " &varNewLineText &"<br>"
		else 'Om raden inte finns
			'response.write("Finner = <font color=red>" &varNewLineNumber &" - ["	&varNewLineText &"]</font><br>")
			varHtmlOutputString = varHtmlOutputString &"<font color=red><b>" &varNewLineNumber &": " &varNewLineText &"</b></font><br>"
		end if
		varNewPageString = varNewPageString &varNewLineText &";"
	loop
end if
%>

<%
'KONTROLLERAR OM STRÄNGAR HAR BLIVIT RADERADE
Set TSOrg = objFSO.OpenTextFile(srtFileNameOrg, ForReading, Create)
If Not TSOrg.AtEndOfStream Then 	
	Do While Not TSOrg.AtendOfStream 									'Loopar igenom Orgianldokumentet
		varOrgLineNumber = TSOrg.Line								'Hämtar textens radnummer
		varOrgLineText = TSOrg.ReadLine							'När man anropar denna så byts rad autmatiskt
		if InStr(varNewPageString, varOrgLineText) > 0 then 	'Letar om strängen finns med på sidan. Korta sökningar blir inte så exakta
			'response.write("Finner = <font color=green>" &varOrgLineNumber &" - [" &varOrgLineText &"]</font><br>") 
		else 
			'response.write("Finner = <font color=red>" &varOrgLineNumber &" - [" &varOrgLineText &"]</font><br>") 
			varHtmlOutputStringDeleted = varHtmlOutputStringDeleted &"<font color=red><b>" &varOrgLineNumber &": " &varOrgLineText &"</b></font><br>"
		end if
	loop
end if
%>

<font face=verdana size=2>
<u><b>Checking the original file to verify deleted posts in the new file.</b></u><br>
The following rows were not found in the new text file:<p>
<%=varHtmlOutputStringDeleted%>
<br><br>
<u><b>This is the new text file. Changes in read.</b></u><p>
<%=varHtmlOutputString%>
</font>
Medlem sedan juli 20041 183 inlägg
#4

mattiasnordin skrev:

This is the new text file. Changes in read.

Changes in red... :P

Medlem sedan maj 20012 080 inlägg
#5

Oups...

Medlem sedan sep. 20051 inlägg
#6

Använd editorn Emacs.
Ange de två filernas namn och ut kommer en skillnadslista på skärmen.
Finns Emacs fortfarande? Många utvecklares superverktyg för ett antal år sedan.

Medlem sedan feb. 20002 300 inlägg
#7

lecon skrev:

Använd editorn Emacs.
Ange de två filernas namn och ut kommer en skillnadslista på skärmen.
Finns Emacs fortfarande? Många utvecklares superverktyg för ett antal år sedan.

emacs lever i allra högsta grad! När man väl lärt sig hantera emacs så vill man inte byta. Otroligt kraftfull (och hatad ;) )

Medlem sedan juli 20011 084 inlägg
#8

Phorpher skrev:

emacs lever i allra högsta grad! När man väl lärt sig hantera emacs så vill man inte byta. Otroligt kraftfull (och hatad ;) )

mer info tack... :) Var hittar man "emacs", hur funkar det?

Medlem sedan feb. 20002 300 inlägg
#9

mozilla skrev:

mer info tack... :) Var hittar man "emacs", hur funkar det?

http://www.gnu.org/software/emacs/emacs.html

Hur det funkar? Jadu. Är man inte vän med kortkommandon så kommer man inte bli vän med emacs. Det är alltså en ganska hög tröskel att klättra över innan man börjar uppskatta den.

Hela emacs är uppbyggd med lisp. Så vill du modifiera någon funktion eller lägga till någon funktion så är det bara att sätta sig ner och knacka lisp §e . Det finns fruktansvärt mycket små features i emacs och det tar sin tid att hitta dem alla. Det finns manualer på adressen jag gav dig.

Medlem sedan juni 20008 205 inlägg
#10

Emacs är en skitbra allroundeditor. Men diff är nog det det man helst vill ha för detta ändamål: http://en.wikipedia.org/wiki/Diff (kolla på relaterade länkar)

Medlem sedan maj 20012 080 inlägg
#11

Använd editorn Emacs.
Ange de två filernas namn och ut kommer en skillnadslista på skärmen.
Finns Emacs fortfarande? Många utvecklares superverktyg för ett antal år sedan

Antar att det fungerar utmärkt. Ville ha en online version. Har tyvärr inte någon unix kärra :)

Medlem sedan juni 20008 205 inlägg
#12

Emacs funkar finemang på Windows.
http://www.gnu.org/software/emacs/windows/ntemacs.html

274 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)