Entfernen von Leerzeichen in Datei

Hi Linuxexperten,

ich hatte hier schon einmal mein Problem gepostet, was das entfernen von Tabs und Leerzeichen in Leerzeilen betrifft. Ich hatte daraufhin folgende Lösungen erhalten:

perl -ne ‚s/^\s+$/\n/;print;‘ zieldatei

oder

sed ‚s/^\s+$/\n/‘ source >target

Jetzt mein Problem:

Ich muss das in mehreren Dateien machen, kann man das irgendwie auf alle Files in einem Verzeichnis bzw. auf Dateien mit bestimmten Dateiendungen anwenden? Es muss auch keine Zieldatei geben, die gleiche Datei bearbeitet machts auch…

Please help…

Hallo,

ich hatte hier schon einmal mein Problem gepostet, was das
entfernen von Tabs und Leerzeichen in Leerzeilen betrifft.

Jetzt mein Problem:

Ich muss das in mehreren Dateien machen, kann man das
irgendwie auf alle Files in einem Verzeichnis bzw. auf Dateien
mit bestimmten Dateiendungen anwenden?

Lese Dir mal das Advanced Bash-Scripting-Howto an!
http://www.tldp.org/LDP/abs/html/

for f in $(ls -1 /\*);
do

done

Es muss auch keine
Zieldatei geben, die gleiche Datei bearbeitet machts auch…

Das geht in die Hose !

Gruß,
Andreas

Vielen Dank, werde mir das mal anschauen.

for f in $(ls -1 /*);
do

done

Es muss auch keine
Zieldatei geben, die gleiche Datei bearbeitet machts auch…

wie geb ich dann die ziel datei in der schleife an?
sollte dann soetwas wie alterdateiname2.* sein oder ähnlich…

Das geht in die Hose !

Gruß,
Andreas

wie geb ich dann die ziel datei in der schleife an?
sollte dann soetwas wie alterdateiname2.* sein oder ähnlich…

Ohne es probiert zu haben:

for f in $(ls -1 /\*);
do
 perl -ne 's/^\s+$/\n/;print;' $f.neu
done

So sollte es gehen.

Stefan

Danke, ich bekomm es nicht hin. muss das als shell script (.sh) laufen oder perl? oder einfach eintippen? hab das alles versucht, lief aber nicht. wsa mach ich falsch?

Ohne es probiert zu haben:

for f in $(ls -1 /*);
do
perl -ne ‚s/^\s+$/\n/;print;‘ $f.neu
done

So sollte es gehen.

Stefan

Danke, ich bekomm es nicht hin. muss das als shell script
(.sh) laufen oder perl? oder einfach eintippen? hab das alles
versucht, lief aber nicht. wsa mach ich falsch?

Das ist ein Shellscript. Wie äußert sich denn „lief aber nicht“?

Stefan

Das ist ein Shellscript. Wie äußert sich denn „lief aber
nicht“?

$ ./leerz.sh

bad interpreter: A file or directory in the path name does not exist.

leerz.sh:

#!/bin/bash

for f in $(ls -1 /home/somuser/ftp_down/*.profil);
do
perl -ne ‚s/^\s+$/\n/;print;‘ $f.neu
done

Brauch man root Rechte um Shell Scripte auszuführen? Die hab ich nicht…
Der Pfad stimmt hab ich nochmal überprüft.

$ ./leerz.sh
bad interpreter: A file or directory in the path name
does not exist.

Im Script hast Du #!/bin/bash angegeben. Die Fehlermeldung hört sich so an, es existiere /bin/bash nicht.

  1. Gibt es /bin/bash? Kann man herausfinden mit ‚whereis bash‘ oder ‚locate bash‘.

  2. Funktioniert es ohne die Zeile #!/bin/bash?

Brauch man root Rechte um Shell Scripte auszuführen? Die hab
ich nicht…

Braucht man auch nicht. Allerdings muss das Script ausführbar gemacht werden (chmod 700 leerz.sh) und mit ./leerz.sh gestartet werden. Aber so wie es aussieht, hast du das ja gemacht.

Stefan

  1. Gibt es /bin/bash? Kann man herausfinden mit ‚whereis bash‘
    oder ‚locate bash‘.

~/etc/temp # whereis bash
bash: /usr/bin/bash

Bash gibt es.

  1. Funktioniert es ohne die Zeile #!/bin/bash?

Nein, dann gibt es diesen Fehler:

$ ./leerz.sh

command not found

'/leerz.sh: line 3: syntax error near unexpected token ; '/leerz.sh: line 3: for f in $(ls -l /home/sad/ftp_down/*.profil);

Danke,

Jörn!

Du musst also die erste Zeile im Script ändern

~/etc/temp # whereis bash
bash: /usr/bin/bash

Bash gibt es.

Das ist korrekt, nur eben nicht unter /bin/bash sondern unter /usr/bin/bash

Setze also in Deinem Script leerz.sh die erste Zeile auf
#!/usr/bin/bash

Dann sollte es klappen.

Ciao
Mischa

Danke für den Support! o.T.
.