Discussione:
Estrapolazione testo
(troppo vecchio per rispondere)
Burocropoli
2011-11-01 16:37:15 UTC
Permalink
con

findstr "Inizio.*Fine" file.txt

ottengo tutta la riga che risponde al criterio.
Ma è possibile ottenere solo la parte corrispondente a .*?
se non è possibile con findstr esiste un altro programma in grado di farlo?
--
http://interno.comze.com
Reventlov
2011-11-01 22:11:50 UTC
Permalink
Il giorno Tue, 01 Nov 2011 17:37:15 +0100, Burocropoli
Post by Burocropoli
con
findstr "Inizio.*Fine" file.txt
ottengo tutta la riga che risponde al criterio.
Ma è possibile ottenere solo la parte corrispondente a .*?
se non è possibile con findstr esiste un altro programma in grado di farlo?
Questo trova le righe che iniziano con "Inizio" e finiscono con "Fine", ma restituisce
solo la parte compresa tra le due parole.


Inizio="Inizio"
Fine="Fine"

a = File_ReadEntireFile ( "c:\documenti\prova.txt" )
b = Split(a,vbCrLf)
For i=1 To UBound(b)
Ris= LeftOf(b(i),Fine)
Ris= RightOf(Ris, Inizio)
If Ris <>"" Then WScript.Echo Ris
next

WScript.Quit

'------------------------------------------------------------------------
' string File_ReadEntireFile( sFileName )
'------------------------------------------------------------------------
' Legge l'intero contenuto del file
' Ritorna il testo letto
'------------------------------------------------------------------------
Function File_ReadEntireFile( ByVal sFileName )
Dim opfs, fp, retstring, ForReading
ForReading = 1 'Open a file for reading only. You can't write to this file

On Error Resume Next
File_ReadEntireFile = ""

Set opfs = CreateObject("Scripting.FileSystemObject")
if Err <> 0 then
Exit Function
end if

Set fp = opfs.OpenTextFile( sFileName, ForReading, False )
if Err <> 0 then
set opfs = nothing
Exit Function
end if


retstring = retstring + fp.Readall

fp.Close

set opfs = nothing

File_ReadEntireFile = retstring
Err.Clear
On Error Goto 0

End Function

'--------------------------------------------------------------------------------------------------
DATA MANIPULATION - STRING
Function LeftOf( sText, sItem )
Dim nPos
Dim sResult

nPos = InStr( sText, sItem )
If nPos >0 Then
sResult = Left( sText, nPos -1 )
End If
LeftOf = sResult
End Function

Function RightOf( sText, sItem )
Dim nPos
Dim sResult

nPos = InStr( sText, sItem )
If nPos >0 Then
sResult = Mid( sText, nPos + Len( sItem ) )
End If
RightOf = sResult
End Function
--
Giovanni Cenati (Bergamo, Italy)
Write to "Reventlov" at katamail com
http://digilander.libero.it/Cenati (Esempi e programmi in VbScript)
--
Burocropoli
2011-11-01 22:28:27 UTC
Permalink
Reventlov ha scritto quanto segue il 01/11/2011 23.11>
Post by Reventlov
Il giorno Tue, 01 Nov 2011 17:37:15 +0100, Burocropoli
Post by Burocropoli
con
findstr "Inizio.*Fine" file.txt
ottengo tutta la riga che risponde al criterio.
Ma è possibile ottenere solo la parte corrispondente a .*?
se non è possibile con findstr esiste un altro programma in grado di farlo?
Questo trova le righe che iniziano con "Inizio" e finiscono con "Fine", ma restituisce
solo la parte compresa tra le due parole.
Inizio="Inizio"
Fine="Fine"
a = File_ReadEntireFile ( "c:\documenti\prova.txt" )
b = Split(a,vbCrLf)
For i=1 To UBound(b)
Ris= LeftOf(b(i),Fine)
Ris= RightOf(Ris, Inizio)
If Ris<>"" Then WScript.Echo Ris
next
WScript.Quit
'------------------------------------------------------------------------
' string File_ReadEntireFile( sFileName )
'------------------------------------------------------------------------
' Legge l'intero contenuto del file
' Ritorna il testo letto
'------------------------------------------------------------------------
Function File_ReadEntireFile( ByVal sFileName )
Dim opfs, fp, retstring, ForReading
ForReading = 1 'Open a file for reading only. You can't write to this file
On Error Resume Next
File_ReadEntireFile = ""
Set opfs = CreateObject("Scripting.FileSystemObject")
if Err<> 0 then
Exit Function
end if
Set fp = opfs.OpenTextFile( sFileName, ForReading, False )
if Err<> 0 then
set opfs = nothing
Exit Function
end if
retstring = retstring + fp.Readall
fp.Close
set opfs = nothing
File_ReadEntireFile = retstring
Err.Clear
On Error Goto 0
End Function
'--------------------------------------------------------------------------------------------------
DATA MANIPULATION - STRING
Function LeftOf( sText, sItem )
Dim nPos
Dim sResult
nPos = InStr( sText, sItem )
If nPos>0 Then
sResult = Left( sText, nPos -1 )
End If
LeftOf = sResult
End Function
Function RightOf( sText, sItem )
Dim nPos
Dim sResult
nPos = InStr( sText, sItem )
If nPos>0 Then
sResult = Mid( sText, nPos + Len( sItem ) )
End If
RightOf = sResult
End Function
ma in dos puro?
--
http://interno.comze.com
Continua a leggere su narkive:
Loading...