String.trim() mit bash

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
regedit
Beiträge: 10
Registriert: 23.07.2004 20:53:35

String.trim() mit bash

Beitrag von regedit » 23.09.2004 22:55:50

hi

Ich bin gerade dabei ein Bashscript zu basteln. Dazu benötige ich irgendwas mit der Funktion trim() wie in Java (soll heissen, dass alle spaces, tabs und returns vorne und hinten weggeschnitten werden. ). Ich bin schon längere Zeit beim Suchen, finde aber nichts.
Weiss einer von euch weiter?

bye

<mawe>
Beiträge: 24
Registriert: 07.09.2004 15:01:41
Wohnort: Purkersdorf

Beitrag von <mawe> » 24.09.2004 08:17:53

Hi!

Code: Alles auswählen

echo "    so many spaces    " | sed 's/^ *//' | sed 's/ *$//'
Ist nicht ganz so elegant wie trim, sollte aber funktionieren :wink:

Gruß, <mawe>

Benutzeravatar
Dookie
Beiträge: 1104
Registriert: 17.02.2002 20:38:19
Wohnort: Salzburg
Kontaktdaten:

Beitrag von Dookie » 24.09.2004 15:56:59

Hi,

bei einer zuweisung zu einer Variablen wird automatisch getrimmt

Code: Alles auswählen

fritz@seneca:~$ test="    so many spaces     "
fritz@seneca:~$ echo $test
so many spaces
Gruß

Dookie

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Beitrag von peschmae » 25.09.2004 12:33:16

bei echo wird automatisch getrimt, nicht bei Variablenzuweisung:

Code: Alles auswählen

test="    so many spaces     "
set|grep test
       test='    so many spaces     '
MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

Benutzeravatar
Dookie
Beiträge: 1104
Registriert: 17.02.2002 20:38:19
Wohnort: Salzburg
Kontaktdaten:

Beitrag von Dookie » 25.09.2004 14:23:48

bei echo wird automatisch getrimt, nicht bei Variablenzuweisung
uups stimmt :oops:

Hab da eine Lösung die Python zuhilfe nimmt.

Code: Alles auswählen

fritz@seneca:~$ test=" \t   so many spaces and others  \n "
fritz@seneca:~$ test2=`python -c "print \"$test\".strip()"`
fritz@seneca:~$ set|grep test2
test2='so many spaces'
Gruß

Dookie

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Beitrag von peschmae » 25.09.2004 17:31:50

oh, ich hab die Fortsetzung vergessen :D

Code: Alles auswählen

peschmae@thinkpad:~$ test="    so many spaces     " 
peschmae@thinkpad:~$ set|grep ^test
test='    so many spaces     '
peschmae@thinkpad:~$ test=$(echo $test)
peschmae@thinkpad:~$ set|grep ^test
test='so many spaces'
MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

julien
Beiträge: 1062
Registriert: 06.05.2002 19:53:05
Wohnort: Oberhessen

Beitrag von julien » 25.09.2004 17:53:10

<mawe> hat geschrieben:Hi!

Code: Alles auswählen

echo "    so many spaces    " | sed 's/^ *//' | sed 's/ *$//'
Ist nicht ganz so elegant wie trim, sollte aber funktionieren :wink:

Gruß, <mawe>
das kann man auch in einen regex schreiben:

Code: Alles auswählen

echo "    so many spaces    " | sed 's/^ *\.* *//'

<mawe>
Beiträge: 24
Registriert: 07.09.2004 15:01:41
Wohnort: Purkersdorf

Beitrag von <mawe> » 25.09.2004 21:04:30

Hi!

@Blooddrinker: Nicht ganz. Versuch mal das

Code: Alles auswählen

echo -n "   so many spaces    " | sed 's/^ *\.* *//' && echo -
Gruß, <mawe>

regedit
Beiträge: 10
Registriert: 23.07.2004 20:53:35

Beitrag von regedit » 29.09.2004 16:02:37

danke für die Antworten.

Weiss noch jemand ein gutes sed tutorial?

bye

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Beitrag von peschmae » 29.09.2004 20:52:06

Sind zwar alle auf Englisch...
http://www.grymoire.com/Unix/index.html
http://www.student.northpark.edu/pemente/sed/

und vor allem das OReilly-Buch Sed & Awk:
http://polymer.bu.edu/~fding/sedawk/

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

Beitrag von mistersixt » 30.09.2004 08:03:15

Blooddrinker hat geschrieben:
<mawe> hat geschrieben:Hi!

Code: Alles auswählen

echo "    so many spaces    " | sed 's/^ *//' | sed 's/ *$//'
Ist nicht ganz so elegant wie trim, sollte aber funktionieren :wink:

Gruß, <mawe>
das kann man auch in einen regex schreiben:

Code: Alles auswählen

echo "    so many spaces    " | sed 's/^ *\.* *//'
Damit bekommt man aber keine Tabulatoren weg, daher wäre der hier wahrscheinlich noch sinnvoller:

Code: Alles auswählen

echo -e " \t   so many spaces    " | sed 's/^[ \t]*//;s/[ \t]*$//'
Gruss, mistersixt.
--
System: Debian Bookworm, 6.11.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 3.8 Ghz., Radeon RX 5700 XT, 32 GB Ram, XFCE

<mawe>
Beiträge: 24
Registriert: 07.09.2004 15:01:41
Wohnort: Purkersdorf

Beitrag von <mawe> » 30.09.2004 08:14:15

Hi!

@mistersixt:
Oder gleich so:

Code: Alles auswählen

echo -e "  \t   so many spaces   " | sed 's/^\s*//;s/\s*$//'
Gruß, <mawe>

Antworten