Portál AbcLinuxu, 5. května 2025 18:43
echo $VAR | tr " " "\\ "
Řešení dotazu:
sed 's, ,\\ ,g'
tr
dokaze vymenovat jen znak za znak. Takze jeden znak s jedne usporadane mnoziny vymeni za prislusny znak z druhe usporadana mnoziny.
Priklad v kontextu:
printf " neco co obsahuje mezery a jednu dvojmezeru" | sed 's, ,\\ ,g'
\ neco\ co\ obsahuje\ mezery\ a\ jednu\ \ dvojmezeru
Jinak pro zpracovani cest s mezerou se vetsinou v shellu pouzivaji jine triky, napr. citace nebo nastaveni promenne IFS.
No a este neda nedoplnit...
echo "${var// // }"
Teda vlastne skor:
echo "${var// /\\ }"
Priklad: mame tieto subory v adresari:
"audio kniha.mp3" "nejaky obrazok.jpg" "novy textak.txt"
Takto to vyhladas a "spojis":
ls -1|while read item; do echo $item| tr -d [:blank:]; done
ja@server:~/asdf$ ls audio kniha.mp3 nejaky obrazok.jpg novy textak.txt ja@server:~/asdf$ ls -1|while read item; do echo $item| tr -d [:blank:]; done audiokniha.mp3 nejakyobrazok.jpg novytextak.txt ja@server:~/asdf$
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.