Ich hab ein paar Änderungen ausgeführt, die es mir etwas übersichtlicher machen. Aus ${A29}${A14} – Strg + Backspace – wird nun ${E14}.
Den sed Interpreter habe ich noch nicht so richtig Verstanden, ganz besonders die definierte Zeichenklasse "[^\x1\x3]*". Theoretisch könnte man das auch anders Formulieren? Bsp.: [^\${A57}^\${E14}]* , da ja am Anfang \x1 und \x3 durch diese Werte ersetzt werden. Naja am liebsten würde ich mir den Regex Statment selber zusammenbasteln, aber ich stehe da etwas Kopflos da. Bevor ich nun weitere Stunden damit verbringe meine Lösung durch probieren und Google rauszufinden, ist es womöglich am besten nochmals nachzufragen. Mir sind zwei Probleme aufgefallen, die womöglich meine Fragestellung endgültig löst.
Problem 1:
Zwischen den Werten ${A57} und ${E14} muss die Bedingung gesetzt werden, dass ein Inhalt sich darin befinden. Der Grund ist, wenn bei einem Wort ein Whitespace sich davor befindet wie zbsp.:
Code: Alles auswählen
"${A17}${A23}${A19}${A57}${A35}${A30}${A48}${A18}${A49}${A57}"
"wir haben "
Dann hat der Befehl wenig Auswirkung auf das löschen vom Wort "haben ", denn er löscht nur das davor gesetzte Whitespace.
Problem 2:
Die Mehrfache ausführung von "Strg + Backspace" funktioniert nur einmalig, dass heißt, bei einem Satz wie zbsp:
Code: Alles auswählen
"${A17}${A23}${A19}${A57}${A35}${A30}${A48}${A18}${A49}"
"wir haben"
Lässt sich mit der ersten ausführung von ${E14} das Wort haben löschen. Bei der zweiten ausführung Stuckt es jedoch und das Wort "wir" bleibt erhalten.
Es ist mir nicht möglich, das File mit dem Input zu verändern, da die Tastenanschläge durch ein C Programm in das File geschrieben wird. Das Problem ist nun, wenn ich mit sed das File bearbeiten würde, bricht der Stream mit dem C Programm ab und kann keinen weiteren Input in das File schreiben. Das File wird in einem Bashscript in eine Variable geladen und mit eval infolge aufgelöst.
Code: Alles auswählen
echo -e ":$(eval echo "$(cat $file | sed 's/\${A57}/\x1/g;s/\${E14}/\x3/g;s/[^\x1\x3]*\x3//g;s/\x1/${A57}/g;s/\x3/${E14}/g')" | sed 's/\\n/˽/g')" | sed ':s; s#[^\x08]\x08##g; t s' | sed 's/˽/\\n/g' | sed 's/[.]/\\n/g')
Ich würde es mir wünschen und es würde mir sehr helfen, wenn ich am besten mit einem Einzeiler die genannten Probleme dadurch lösen könnte und bin auch sehr Wissbegierig darüber, wie ich zukünftig selber einen Regex Statment aufbauen kann, der mir künftig in einem Ähnlichen Problem helfen könnte.
Hier ist kleine Vorschau darüber, was genau das Programm bezwecken sollte:
https://ibb.co/SxMQZT3