[BASH] Usuwanie pustych znaków z lewej strony

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Awatar użytkownika
rryk
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 206
Rejestracja: 04 mar 2008, 16:00
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: GNOME
Kontakt:

[BASH] Usuwanie pustych znaków z lewej strony

Post autor: rryk »

Jak usunąć znaki typu spacja lub tabulator z lewej strony?? lub ew. z obydwu stron...
Awatar użytkownika
beluosus
Zakręcona Traszka
Zakręcona Traszka
Posty: 695
Rejestracja: 01 paź 2006, 15:32
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Xfce
Architektura: x86
Kontakt:

Odp: [BASH] Usuwanie pustych znaków z lewej strony

Post autor: beluosus »

man sed! :P

Kod: Zaznacz cały

sed 's/^\s\+//'
Kurs Linuksa: for i in $(ls /bin); do man $i; done
__________________
http://beluosus.pl/
Awatar użytkownika
kamilsilver
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 105
Rejestracja: 06 lis 2008, 21:53
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: KDE Plasma
Architektura: x86

Odp: [BASH] Usuwanie pustych znaków z lewej strony

Post autor: kamilsilver »

A awk (ucina z obu stron):

Kod: Zaznacz cały

zmienna="$(echo "$zmiennaZeSpacjami" | awk '{gsub(/^ +| +$/,"")}1')"
echo "'$zmienna'"
Temat rozwiązany? Dodaj [solved] w tytule tematu :)
Inny OS => Debian Squeeze (testing)
Awatar użytkownika
sulti
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 139
Rejestracja: 17 wrz 2007, 15:31
Płeć: Mężczyzna
Wersja Ubuntu: 12.10
Środowisko graficzne: Unity
Architektura: x86

Odp: [BASH] Usuwanie pustych znaków z lewej strony

Post autor: sulti »

Nie zatrudniając do tego zadania pipe'ów można to zrobić tak:

Kod: Zaznacz cały

old="    test"
echo "$old"
    test
new=`expr match "$old" '[ ]*\(.*\)'`
echo "$new"
test
You tried, and you failed, so the lesson is, never try.
Awatar użytkownika
kamilsilver
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 105
Rejestracja: 06 lis 2008, 21:53
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: KDE Plasma
Architektura: x86

Odp: [BASH] Usuwanie pustych znaków z lewej strony

Post autor: kamilsilver »

A prościej bashem:

Kod: Zaznacz cały

$ a="  zmienna ze zbednymi spacjami do trima    "
$ echo "'$a'"
'  zmienna ze zbednymi spacjami do trima    '
$ b=$(echo $a)
$ echo "'$b'"
'zmienna ze zbednymi spacjami do trima'
Temat rozwiązany? Dodaj [solved] w tytule tematu :)
Inny OS => Debian Squeeze (testing)
Awatar użytkownika
sulti
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 139
Rejestracja: 17 wrz 2007, 15:31
Płeć: Mężczyzna
Wersja Ubuntu: 12.10
Środowisko graficzne: Unity
Architektura: x86

Odp: [BASH] Usuwanie pustych znaków z lewej strony

Post autor: sulti »

Heh, faktycznie sprytne :)
You tried, and you failed, so the lesson is, never try.
Awatar użytkownika
beluosus
Zakręcona Traszka
Zakręcona Traszka
Posty: 695
Rejestracja: 01 paź 2006, 15:32
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Xfce
Architektura: x86
Kontakt:

Odp: [BASH] Usuwanie pustych znaków z lewej strony

Post autor: beluosus »

sulti pisze:Nie zatrudniając do tego zadania pipe'ów
Ale dlaczego nie? Do tego one służą, tak czy siak uruchamiasz dodatkowy program ale w Twoim przypadku wyjście przekazujesz "na około".
kamilsilver pisze:A prościej bashem:

Kod: Zaznacz cały

$ a="  zmienna ze zbednymi spacjami do trima    "
$ echo "'$a'"
'  zmienna ze zbednymi spacjami do trima    '
$ b=$(echo $a)
$ echo "'$b'"
'zmienna ze zbednymi spacjami do trima'
Może i prościej ale to nie trim tylko usuwanie wszystkich podwójnych spacji, co niekoniecznie może być pożądane.

EDIT:
Usuwa nie tylko podwójne spacje ale właściwie wszystkie podwójne białe znaki.
Kurs Linuksa: for i in $(ls /bin); do man $i; done
__________________
http://beluosus.pl/
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 11 gości