Gibt es eine vereinfachte Lösung in AutoIt, die so lautet:
DaherFinde eine Zeile die mit X beginnt, prüfe dann, ob die nächste Zeile mit Y beginnt und wenn ja, dann tausche beide Zeilen und füge eine weitere Zeile Z hinzu.
( klingt einfach, aber irgendwie beiße ich mir daran die Zähne aus )
So in etwa...
AutoIt
;-- TIME_STAMP 2018-09-21 17:04:11 v 0.1
#include <Array.au3>
Local $sPath = 'm:\Zeilen.txt'
;~ Local $aFile = FileReadToArray($sPath)
Local $aFile = [ _
'# 2 beliebiger Text', _
'# 1 juhu ein Sandkorn', _
'... viele Zeilen', _
'# 2 beliebiger Text', _
'# 1 juhu ein Korn', _
'... viele Zeilen']
For $i = 0 To UBound($aFile) -1 Step 1
If $i < UBound($aFile) -1 And StringLeft($aFile[$i], 3) = '# 2' And StringLeft($aFile[$i + 1], 3) = '# 1' Then
_ArraySwap($aFile, $i, $i + 1)
_ArrayInsert($aFile, $i + 2, '# 3' & StringMid($aFile[$i], 4))
EndIf
Next
_ArrayDisplay($aFile, '$aFile')
;~ Local $hFile = FileOpen($sPath, $FO_OVERWRITE) ; $FO_APPEND (1), $FO_OVERWRITE (2), $FO_CREATEPATH (8), $FO_BINARY (16), $FO_UTF8 (128), $FO_UTF8_NOBOM (256), $FO_ANSI (512)
;~ Local $iWrite = FileWrite($hFile, '') + FileClose($hFile) ? FileGetSize($sPath) : -1
;~ If $iWrite < 1 Then
;~ ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : Error $hFile = ' & $hFile & ' $iWrite = ' & $iWrite & ' FileWrite('&$sPath&')' & @CRLF)
;~ ; Exit 1
;~ EndIf
Alles anzeigen