Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
detix
- Beiträge: 1743
- Registriert: 07.02.2007 18:51:28
- Wohnort: MK
Beitrag
von detix » 17.03.2008 18:38:44
...und nur dort, aber Zeichen für Zeichen (wg. Formartierung html/bbcode), aus
soll z.B. werden
L steht für 'und#160;' oder sowas, ein erzwungenes Leerzeichen eben.
Der einfachste Weg wäre:
sed -e 's/ /LL/g' Datei
Das greift aber nicht, wenn in der Zeile noch weitere doppelte Leerzeichen vorkommen,
und das kann ich leider nicht ausschließen...
Zuletzt geändert von
detix am 18.03.2008 19:55:26, insgesamt 1-mal geändert.
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!
-
Duff
- Beiträge: 6321
- Registriert: 22.03.2005 14:36:03
- Wohnort: /home/duff
Beitrag
von Duff » 17.03.2008 19:14:41
Wenn "nur" die Leerzeichen am Anfang der Datei entfernt werden sollen, kannst du es so machen.
Code: Alles auswählen
daniel@daniel-laptop:/tmp$ cat test
blabla blablabla blabla
blabla blabla blabla
blabla blabla
daniel@daniel-laptop:/tmp$ sed -ne 's/[\t| ]*//p' test
blabla blablabla blabla
blabla blabla blabla
blabla blabla
Oh, yeah!
-
detix
- Beiträge: 1743
- Registriert: 07.02.2007 18:51:28
- Wohnort: MK
Beitrag
von detix » 17.03.2008 19:55:58
Das ist nicht das was ich will, schau dir das Beispiel nochmal an,
die Formatierung am Zeilenanfang geht verloren.
Ich möchte jedes einzelne Leerzeichen am Zeilenanfang,
bis ein anderes Zeichen kommt durch L ersetzen
und nicht alle durch ein einziges L.
Vergesst bitte den Satz "L steht für 'und#160..."
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!
-
gms
- Beiträge: 7798
- Registriert: 26.11.2004 20:08:38
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von gms » 17.03.2008 21:59:28
so ?
Code: Alles auswählen
gms@gms1 ~ $ cat x.txt
bla
blabla
blabla
bla bla
gms@gms1 ~ $ perl -pe '$_="L"x length($1)."$2\n" if /^( *)([^ ].*)?$/; ' x.txt
bla
LLblabla
LLLLblabla
LLbla bla
Gruß
gms
-
Duff
- Beiträge: 6321
- Registriert: 22.03.2005 14:36:03
- Wohnort: /home/duff
Beitrag
von Duff » 18.03.2008 08:36:09
Sollte in perl doch auch mit
\s
Zwischenraum ("whitespace")
funktionieren.
Oh, yeah!
-
gms
- Beiträge: 7798
- Registriert: 26.11.2004 20:08:38
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von gms » 18.03.2008 09:30:43
Duff hat geschrieben:Sollte in perl doch auch mit
\s
Zwischenraum ("whitespace")
funktioniert auch, was hätte das hier aber für Vorteile ?
-
finupsen
- Beiträge: 1327
- Registriert: 21.04.2004 20:07:05
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Dortmund
-
Kontaktdaten:
Beitrag
von finupsen » 18.03.2008 12:32:19
Geht das nicht auch mit sed ?
ich mein ich hatte mal was gelsen, das auch sowas in der art geht :
Ist nur ein beispiel, das obige wird so nicht funktionieren. Es geht nur darum ob sed in der lage ist
matches auch zu zählen...
Niemand hat vor eine zentrale Datensammelbehörde aufzubauen. Es handelt sich vielmehr um dezentrale IT-Systeme die miteinander vernetzt werden.
... und Wasser ist naß.
-
gms
- Beiträge: 7798
- Registriert: 26.11.2004 20:08:38
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von gms » 18.03.2008 13:00:04
finupsen hat geschrieben:Geht das nicht auch mit sed ?
klar doch, zum Beispiel einfach von hinten ersetzen:
Code: Alles auswählen
gms@gms2 ~ $ cat x.txt
bla
bla bla
bla bla bla
gms@gms2 ~ $ sed -e ':x s/^\( *\) \(.*\)$/\1L\2/; t x' x.txt
bla
LLbla bla
LLLLbla bla bla
Gruß
gms
-
Duff
- Beiträge: 6321
- Registriert: 22.03.2005 14:36:03
- Wohnort: /home/duff
Beitrag
von Duff » 18.03.2008 14:09:30
Nicht schlecht.
Wie würde man es denn für alle Leerzeichen machen?
Oh, yeah!
-
finupsen
- Beiträge: 1327
- Registriert: 21.04.2004 20:07:05
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Dortmund
-
Kontaktdaten:
Beitrag
von finupsen » 18.03.2008 16:54:09
gms hat geschrieben:
klar doch, zum Beispiel einfach von hinten ersetzen:
Code: Alles auswählen
gms@gms2 ~ $ sed -e ':x s/^\( *\) \(.*\)$/\1L\2/; t x' x.txt
Ja auch gut - nice nice
Aber zählen, wie schauts damit ?
@Duff
> Wie würde man es denn für alle Leerzeichen machen?
Niemand hat vor eine zentrale Datensammelbehörde aufzubauen. Es handelt sich vielmehr um dezentrale IT-Systeme die miteinander vernetzt werden.
... und Wasser ist naß.
-
Duff
- Beiträge: 6321
- Registriert: 22.03.2005 14:36:03
- Wohnort: /home/duff
Beitrag
von Duff » 18.03.2008 18:53:26
Oh mann...
Und ich war immer bei sowas dran
und habe mich über dessen Ausgabe gewundert.
Oh, yeah!
-
detix
- Beiträge: 1743
- Registriert: 07.02.2007 18:51:28
- Wohnort: MK
Beitrag
von detix » 18.03.2008 19:53:57
Genial, sowohl die Perl wie auch die sed Lösung funktionieren beide perfekt.
Herzlichen Dank gms und euch allen
Hab mich für die sed Lösung entschieden und gleich ein wenig rumexperimentiert,
die 2te Gruppe und Referenz kann sogar komplett entfallen
und bringt mir auch das gewünschte Ergebnis:
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!