Hi folks,
sei\'s aus dem web oder hier vom Brett - es kommt ja schon mal vor, dass man Text in einen (text/plain-) file kopiert oder durch 2text-converting veränderte files. oder ... Der Text ist aufgrund vorgegebener Zeilenvorschübe, Tabs o.ä. über die 78 Spalten hinaus oder die Zeilenanfänge sind nicht bei Spalte 1 oder ...
Nun kann ich mit
Linux 15.068 Themen, 107.492 Beiträge
Nur ein Tipp, da ich es auch nicht genau weiss
Ja geht, ich weiss nicht genau wie (n Kumpel hats mir mal gezeigt) mit dem Editor vi.
Da gibts n ersetzten-Befehl gemäß:
s/from/to/g - ersetzt "from" durch "to". g führt die Aktion an jeder gefundenen Stelle durch. Beispiel: :2,10s/a/b/g ersetzt in den Zeilen von 2 bis 10 alle Buchstaben a durch b.
also kann man es probieren mit :s/^(hier
Nachtrag:
Vorher die Datei woanders hin sichern, dann man probieren:
s/^\s*//g
d.h.:
suche und ersetzte (s) folgendes (/) alle Zeichen am Anfang einer Zeile (^) die ein Leerzeichen (\s) bzw. mehrere Leerzeichen (*) sind durch (/) nichts (/) und das im ganzen Text (g)
Ich hoffe das ist verständlich und funktioniert.
Bis denne
poly
p.s. Ich hoffe mit der Darstellung der slasches gibts keine Probs, daher nochmal als Text (fw=forwardslash; bg = backslash)
s(fw)(Dach)(bg)s(Stern)(fg)(fg)g
hth
poly
ach shit: ich vergass zu sagen, dass das Kommando im Kommandomodus eingegben muss (ESC-Taste) und immer ein Doppelpunkt vorne sein muss:
:s/^\s*//g
Hi poly,
der tr - translate or delete characters - ist wirklich unproblematisch.
Wenn ich in vim bin, ist Dein Vorschlag vorzuziehen. Aber ich kann Deine Alternative noch nicht umsetzen.
Ich hab also einen file in vim geöffnet und gebe nach Doppelpunkt den von Dir gesandten, hier richtig erkannten Command ein. Bei mir passiert dann gar nichts. Was ist zu tun?
edico
Hi poly - man hört wieder voneinander:
muss Deine Info später mal nachlesen, hab jetzt keine Zeit mehr, aber auf die Schnelle:
also ich hab mal bischen rumgebastelt und komm für mich zu einem guten Ergebnis mit dem command tr
Bsp: edico@linux: tr -s [:blank:] file.transformiert
Als Laie interpretier ich das so: Option -s löscht grundsätzlich Sequenzen; [:blanks:] spricht für sich, > Vielleicht hat ein Profi einen Vorschlag zur Verbesserung oder kennt eine Alternative.
Wie sagst Du noch immer - bis denne. edico
Hi edico,
die Option kannte ich noch nicht, man lernt ja nie aus.
Klingt aber logisch, was du sagst und ich werd mal den trunkate-Befehl nachlesen.
Ha! Mein "bis denne" ist exklusiv für mich *g* Nein nur Spass. Freut mich, wenn sich meine Grußfornel verbreitet.
Bis denne
poly
ICH GLAUB JETZT HAB ICHS:
vi textdatei.txt
:%s/^ //
für ein leerzeichen
:%s/^\s+//
könnte auch gehen.
falls nicht einfach
:%s/^ // mehrmals ausführen.
tabs ersetzten:
:%s/^\t//
Bis denne
poly
Hi poly,
- der erste command fürs Leerzeichen funktioniert, bei mehreren Leerzeichen dementsprechend häufig space-Taste drücken. ok.
- beim zweiten command : pattern not found (^\s). no
- beim tab passierte was, hat aber nur gemeckert: invalid command.
Nur zur Freude - ich habs aber noch nicht raus, wie das gefundene script laufen soll
Q: RegExp to remove extra spaces from all words in a string, but leave one as a separator A: s///
A: use s/// regex to get rid of the spaces... If you want to trim all leading and trailing whitespace AND remove any multiple spaces internal to the string, here is an example:
#!/usr/bin/perl -w
$string = " get rid of multiple spaces! ";
print "The original string = \n$string # remove leading and trailing spaces
$string =~ s/(^\s*)(.*?)(\s*$)/\2/;
print "The new string = \n$string # remove multiple internal spaces
$string =~ s/\s*/\s{1}/;
print "The new string = \n$string
Wenn Du Lust hast und da mit klarkommen kannst, meld dich hier noch mal
thnx :-) edico
