Zeichen an einer best. Stelle in Textdatei ersetze

Hallo,

ich kenne mich mit Expressions usw. nicht gut aus. Daher meine Frage, wie man innerhalb einer Textdatei in allen Zeilen z.B. an Stelle 12 das Zeichen ersetzen kann, wenn es sich um eine Zahl handelt? Also um es auf den Punkt zu bringen: Ersetze alle Zeichen an Stelle 12 durch ein Leerzeichen, wenn dort eine Zahl steht. Könnte mir da bitte jemand weiterhelfen?

Danke im Vorraus und Gruß

Bonkers

Nachfrage
Hallo Bonkers,

Ersetze
alle Zeichen an Stelle 12 durch ein Leerzeichen, wenn dort
eine Zahl steht.

Kleine Nachfrage: Eine Zahl kann ja durchaus länger sein. Sollen die nachfolgenden Ziffern auch ersetzt werden? Also sowas, aus

abcdefghijk123mn

soll

abcdefghijk mn

werden, oder nur genau die Ziffer an Stelle 12 ersetzen?

abcdefghijk123mn

->

abcdefghijk 23mn

Ich nehme an, das erstere.

Viele Grüße
Marvin

nur eine ziffer
Das hätte ich dazu schreiben sollen, es handelt sich nur um eine Ziffer also etwas von 0-9.

Hi Bonkers,

das sollte dein Problem lösen

Maddins-MacBook:~ martin$ cat test.txt 
abcdefghijk2hfn
sdjlsdiinwlefnw
Maddins-MacBook:~ martin$ awk 'BEGIN{FS="";OFS=""}{sub(/[0-9]/," ",$12);print}' test.txt 
abcdefghijk hfn
sdjlsdiinwlefnw

Wie immer nicht schön, dafür aber selten :wink:

Gruß
Martin

Hallo Bonkers,

nur eine Ziffer

Das erleichtert die Sache doch ungemein :wink:
Mein Vorschlag:

sed -e 's/\(^.\{11\}\)[0-9]/\1\_/' dateiname

Ein wenig erläutert:
^ vom Beginn jeder Zeile
. beliebige Zeichen
{11} aber genau 11-mal
die runde Klammerung ( ) um den ganzen Ausdruck sorgt dafür, daß dies der „Variablen“ \1 zugewiesen wird
[0-9] nach diesen 11 Zeichen soll genau eine Ziffer kommen
wenn das alles zutrifft, ersetze den ersten regulären Ausdruck (also die ersten 11 Zeichen am Anfang) durch sich selbst, also \1
Die zweite regExp (also die Ziffer) soll durch den Unterstrich ersetzt werden.
Das wars.
Natürlich nimmst Du statt des Unterstrichs ein Leerzeichen. Habe ich jetzt nur so gemacht, weil man den Unterstrich irgendwie besser als ein Leerzeichen sieht :wink: Auch die Pluszeichen an 11. Stelle sind nur dazu da, das Zählen zu erleichtern, im Ernstfall kann da auch was andres stehen, funktioniert (hoffentlich) trotzdem immer…
Meine Testdatei:

asdfrghjki+12hg+
adh46jghdt+3cg+
fsahtX6543+1phfr+
fuzmhvzuzm+h9gfhj-
fghjhhkuiu+hjizh-
ghghghghhg+1+
abcdefghij+9mnop123u+
fsahtXasb3012phfr+

Mein Aufruf erzeugt daraus sowas:

asdfrghjki+\_2hg+
adh46jghdt+\_cg+
fsahtX6543+\_phfr+
fuzmhvzuzm+h9gfhj-
fghjhhkuiu+hjizh-
ghghghghhg+\_+
abcdefghij+\_mnop123u+
fsahtXasb30\_2phfr+

Ich hoffe keinen Sonderfall übersehen zu haben. Vielleicht läßt es sich auch einfacher lösen. Also Spezialisten, an die Front :wink:

Viele Grüße
Marvin

1 Like

Vielen Dank, auch für die Erklärung. Werde das die Tage mal anwenden :smile: