Antworten auf deine Fragen:
Neues Thema erstellen

Grep "Formel"

jasuca

Nicht mehr ganz neu hier

Hallo,

ich möchte in einer Tabelle ein Zeitablauf ändern.
In der Tabelle steht immer 7d ,8d, 1-14d usw.

Durch den Befehl "[0-9]+d" Kann ich ja all diese Zeiten aufsuchen, nun bekomme ich sie aber nicht geändert. Ich hab es mit "[0-9]+ Tag" Versucht aber das war wie zu erwarten falsch.:p

Hat da jemand Erfahrung oder Ideen?

mfg
 

Design & Layout

D

Diskord

Guest

AW: Grep "Formel"

Versuch es doch mal so:

Suchbefehl: ([0-9]+d)
Ersetzen: $1 Tag

Gruß
Daniel

Edit: Sorry, nicht richtig gelesen. Das "d" soll ja ersetzt werden. Da muss ich noch mal kurz überlegen.
 
Zuletzt bearbeitet von einem Moderator:
D

Diskord

Guest

AW: Grep "Formel"

Jetzt aber:

Suchen: (\d+)(d)
Ändern in: $1 Tag

Ich hoffe, das hilft.
 
D

Diskord

Guest

AW: Grep "Formel"

"\d" ist der Ausdruck für eine beliebige Ziffer. Das "+" dahinter bedeutet ein oder mehrere Male. Damit deckst du also eine beliebige Anzahl an aufeinanderfolgenden Ziffern ab. Durch die Klammern kannst du den Befehl gruppieren bzw. unterteilen.
"$1 Tag" bedeutet, nimm die erste Klammer ($1) und setze "Tag" dahinter. "$2", also die zweite Klammer, wird somit ignoriert.
 
AW: Grep "Formel"

Räusper. Grep ist schon ein richtiges „Schweizer Taschenmesser“. Der Einstieg ist nicht einfach. Und das Verstehen auch nicht wirklich.

Ich werde jetzt nicht mosern, sondern einfach nur versuchen, diese recht einfache Suche etwas ausführlicher zu erklären. Vielleicht hilft das dem Einen oder Anderen ein bisschen, dieses recht abstrakte Thema etwas besser zu verstehen.



… "$2", also die zweite Klammer, wird somit ignoriert.
Fast richtig.

$2 wir nur deswegen ignoriert, weil du das Ergebnis von Fundstelle zwei nicht im Ersetzenfeld eingesetzt hast. Das Ergebnis wurde aber auf jeden Fall in $2 gespeichert.

Es ist nicht wirklich nötig, überhaupt $2 zu verwenden (es ist allerdings auch nicht falsch :lol:)
(\d+)(d)
Du suchst nach einer oder mehreren Ziffern, (die erste Fundstelle speicherst du in $1) mit nachfolgendem d, (die „zweite“ Fundstelle speicherst du in $2)

Das Speichern in $2 ist deshalb nicht notwendig, weil die zweite Fundstelle beim Ersetzen überhaupt nicht benötigt wird. Du könntest auch problemlos nach:
(\d+)d
suchen. Im Gegensatz zu dem ersten Grep wird hier die zweite Fundstelle (der Buchstabe d) gar nicht erst gespeichert. In diesem Fall wird sie tatsächlich „nur“ gefunden und „ignoriert“.

Wobei – ignoriert wird sie nicht wirklich. Denn sie wird ja durch den Ersetzen-Ausdruck ersetzt.



Aber eigentlich willst du ja auch nicht erst ein d mit einer oder mehrere vorangestellten Ziffern finden und diese Ziffern in $1 speichern, nur um diese dann gleich anschliessend durch sich selbst und den Zusatz (Leerzeichen)Tag zu ersetzen.

Dafür (und die Auswirkungen merkt man in großen Dokumenten und bei aufwändigeren Grep-Suchen&Ersetzen auf jeden Fall) gibt es ein paar nette Helferlein. Du suchst ja eigentlich nach einem d, das direkt nach einer Ziffer vorkommt.

Im Deutschen blickst du von deinem d zurück auf die vorhandene Ziffer
Im (D)englischen ist das ein positiver Lookbehind --> (?<=)
(?<=\d)d
Dieser positive Lookbehind findet ein d nur dann, wenn vor diesem eine Ziffer vorhanden ist. Es muss kein Suchergebnis gespeichert werden, und auch das gefundene d wird ignoriert“ und durch den Ersetzenausdruck (Leerzeichen)Tag ersetzt.

Es gibt noch ein paar Möglichkeiten mehr, diese scheint mir persönlich die effektivste und ressourcenschonenste zu sein, auch wenn man sich bei einer kleinen Tabelle darüber überhaupt keine Gedanken machen muss. Solche Gedankengänge sind aber extrem wichtig für das Grundverständnis von Grep und erst recht wichtig für die Erstellung von eigenen Grep-Suchen.

Viel Spass und ein fröhliches greppen.
:D:lol::D
 
D

Diskord

Guest

AW: Grep "Formel"

Natürlich hast du Recht, danke für die detailreiche Ausführung. Ich bin nur am Zweifeln, ob ein Grep-"Einsteiger" das trotz Erklärung versteht. Ich selbst zähle mich noch zu den Anfängern.

Man kann natürlich immer noch mehr in die Tiefe gehen – so würde z.B. keine der oben aufgeführten Formeln "1-14d" finden (bzw. nur das "14d" finden und das "1-" ignorieren. Mich würde deshalb interessieren, ob die Formel alles ersetzt hat, da der TE "1-14d" auch als Beispiel aufgeführt hat.

Meistens braucht es bei mir einige Versuche, bis der richtige Grep-Befehl steht.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.635
Beiträge
1.538.476
Mitglieder
67.559
Neuestes Mitglied
hanuta
Oben