Portál AbcLinuxu, 11. května 2024 04:17


Dotaz: Jak v bashi převedu malá písmena na VELKÁ?

David Watzke avatar 20.12.2005 16:02 David Watzke | skóre: 74 | blog: Blog... | Praha
Jak v bashi převedu malá písmena na VELKÁ?
Přečteno: 192×
Odpovědět | Admin
Jak v Bashi převedu malá písmena na VELKÁ? Díky.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

David Watzke avatar 20.12.2005 16:03 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Jak v bashi převedu malá písmena na VELKÁ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Konkrétně bych chtěl z abc udělat [aA][bB][cC].
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
20.12.2005 16:13 Přemek Jordák | skóre: 12 | Beroun
Rozbalit Rozbalit vše Re: Jak v bashi převedu malá písmena na VELKÁ?
$ echo "AbCDeFgh" |tr [:lower:] [:upper:]
Blogy neprohlížím, nepíši a ani se jim valně nesměji
20.12.2005 16:33 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: Jak v bashi převedu malá písmena na VELKÁ?
Nehledáš spíš case-insensitive grep (-i) nebo sed ( /.../i )?
David Watzke avatar 20.12.2005 19:23 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Jak v bashi převedu malá písmena na VELKÁ?
To asi ne, protože bych to chtěl ... no, radši uvedu příklad:
abc2cba převést na [aA][bB][cC]
bcd2dcb převést na [bB][cC][dD]
a to tak, že si pomocí cut -d2 -f1 vyříznu to před dvojkou a pak to nějak nacpu do [??][??][??]... jenže to bude asi dost kódu... Tedy pokud použiju tr, tak určitě.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
20.12.2005 20:11 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Jak v bashi převedu malá písmena na VELKÁ?
  r=''
  while [ -n "$s" ]; do
    l="${s:0:1}"
    u=`echo "$l" | tr '[:lower:]' '[:upper:]'`
    r="${r}[${l}${u}]"
    s="${s:1}"
  done
Ale, upřímně řečeno, v céčku to napíšete za třetinu času a poběží to o řád rychleji (spíš o několik řádů).
David Watzke avatar 20.12.2005 20:25 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Jak v bashi převedu malá písmena na VELKÁ?
Wow. Je to tak hustý, že se v tom ani nevyznám. Nějak jsem z toho pochopil, že bych to měl uložit do scriptu a spustit to z parametrem třeba abc. Jenže to nic nevypíše.
Ale, upřímně řečeno, v céčku to napíšete za třetinu času a poběží to o řád rychleji (spíš o několik řádů).
No, to je možný, ale nenapíšu to v Bashi, natož v C. :-(
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
20.12.2005 20:53 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
Rozbalit Rozbalit vše Re: Jak v bashi převedu malá písmena na VELKÁ?
Napsat jen do souboru a spustit nestačí, musíš tomu předat vstupní hodnoty (s) a výstup lovit v r.
[tsunami@vodik]$ s=ToJeAlEkRaViNa

[tsunami@vodik]$   r=''

[tsunami@vodik]$   while [ -n "$s" ]; do
>     l="${s:0:1}"
>     u=`echo "$l" | tr '[:lower:]' '[:upper:]'`
>     r="${r}[${l}${u}]"
>     s="${s:1}"
>   done

[tsunami@vodik]$ echo $r
[TT][oO][JJ][eE][AA][lL][EE][kK][RR][aA][VV][iI][NN][aA]
-- Nezdar není hanbou, hanbou je strach z pokusu.
David Watzke avatar 20.12.2005 20:54 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Jak v bashi převedu malá písmena na VELKÁ?
Aha, super.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
20.12.2005 20:12 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: Jak v bashi převedu malá písmena na VELKÁ?
Vypadá to, že ten výsledek je regulární výraz k nějaké další operaci. Zkus napsat, co s tím řetězcem budeš dělat potom. Není vyloučeno, že obě části půjdou vyřešit dohromady nějakým trikem.
David Watzke avatar 20.12.2005 20:26 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Jak v bashi převedu malá písmena na VELKÁ?
Týká se to mýho skriptu - NCoda.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
21.12.2005 17:03 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: Jak v bashi převedu malá písmena na VELKÁ?
V tom případě shopt -s nocaseglob.
20.12.2005 16:09 rastos | skóre: 62 | blog: rastos
Rozbalit Rozbalit vše Re: Jak v bashi převedu malá písmena na VELKÁ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
man tr
20.12.2005 16:47 pol
Rozbalit Rozbalit vše Re: Jak v bashi převedu malá písmena na VELKÁ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
já si obšlehl skriptík, a teď ho vždycky jenom zavolám...


#!/bin/bash
for file in *
do
newfile=`echo "$file" | tr A-Z a-z`
mv "$file" $newfile
done

David Watzke avatar 20.12.2005 21:15 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Jak v bashi převedu malá písmena na VELKÁ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Dobře, mám tedy
s=`echo $1 | cut -d2 -f1`
 while [ -n "$s" ]
  do
   l="${s:0:1}"
   u=`echo "$l" | tr '[:lower:]' '[:upper:]'`
   r="${r}[${l}${u}]"
   s="${s:1}"
  done
echo *.${r}
Chci to pak použít ve funkci:
WL() {
 s=`echo $1 | cut -d2 -f1`
 while [ -n "$s" ]
  do
   l="${s:0:1}"
   u=`echo "$l" | tr '[:lower:]' '[:upper:]'`
   r="${r}[${l}${u}]"
   s="${s:1}"
  done
echo *.${r}
}

 WL
a proměnná r je prázdná. Proč to nejde ve funkci? :-(
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
David Watzke avatar 20.12.2005 21:15 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Jak v bashi převedu malá písmena na VELKÁ?
Samozřejmě to spouštím s parametrem typu aaa2bbb.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
20.12.2005 21:19 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
Rozbalit Rozbalit vše Re: Jak v bashi převedu malá písmena na VELKÁ?
Je mi to skoro trapné, ale mě to funguje
[tsunami@vodik]$ WL() {
>  s=`echo $1 | cut -d2 -f1`
>  r=''
>  while [ -n "$s" ]
>   do
>    l="${s:0:1}"
>    u=`echo "$l" | tr '[:lower:]' '[:upper:]'`
>    r="${r}[${l}${u}]"
>    s="${s:1}"
>   done
> echo *.${r}
> }

[21:17:12]-[~]-
[tsunami@vodik]$ WL ahoj2magor
*.[aA][hH][oO][jJ]
Nezapomeň na to r='', to je tam docela potřeba.
-- Nezdar není hanbou, hanbou je strach z pokusu.
David Watzke avatar 20.12.2005 21:21 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Jak v bashi převedu malá písmena na VELKÁ?
Aha, podcenil jsem to...
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
20.12.2005 21:17 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
Rozbalit Rozbalit vše Re: Jak v bashi převedu malá písmena na VELKÁ?
Jestli to WL na konci tvého příspěvku znamená spuštění funkce, tak je to jasné.

Ty té funkci nepředáš parametry, ale uvnitř se na ně odvoláváš($1).
-- Nezdar není hanbou, hanbou je strach z pokusu.
David Watzke avatar 20.12.2005 21:20 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Jak v bashi převedu malá písmena na VELKÁ?
Znamená, ale proč nepředám? Myslel jsem, že ta funkce si vezme $1 z shellu. :/ Jak ho přemluvím?
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
20.12.2005 21:27 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Jak v bashi převedu malá písmena na VELKÁ?
Že by zcela překvapivě 'WL "$1"'?
David Watzke avatar 20.12.2005 21:33 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Jak v bashi převedu malá písmena na VELKÁ?
Jojo. :-( Snad jsem tady taky neudělal nějakou blbost (no, zřejmě jo)
WL() {
 s=`echo $1 | cut -d2 -f1`
 r=''
 while [ -n "$s" ]
  do
   l="${s:0:1}"
   u=`echo "$l" | tr '[:lower:]' '[:upper:]'`
   r="${r}[${l}${u}]"
   s="${s:1}"
  done
echo *.${r}
}

aac2wav() {
 for F in `WL $1`
  do
   faad -o "${F%%.*}.wav" "$F"
  done
}
Proč je ve funkci aac2wav zase prázdno?
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
20.12.2005 22:00 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
Rozbalit Rozbalit vše Re: Jak v bashi převedu malá písmena na VELKÁ?
Protože $1 ve funkci je parametr té funkce a ne celého skriptu.
-- Nezdar není hanbou, hanbou je strach z pokusu.
David Watzke avatar 20.12.2005 22:04 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Jak v bashi převedu malá písmena na VELKÁ?
Je to ale v ``. Jak to tedy udělám?
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
20.12.2005 22:20 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Jak v bashi převedu malá písmena na VELKÁ?
Představujte si funkci jako samostatný skript, který máte jen shodou okolností napsán v témže souboru. Poziční parametry ve funkci expandují na parametry, se kterými je volána příslušná funkce. Takže v těle funkce WL expanduje $1 na první parametr funkce WL, v těle funkce aac2wav na první parametr funkce aac2wav a jinde na první parametr skriptu.
20.12.2005 22:22 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Jak v bashi převedu malá písmena na VELKÁ?
Jinak bych asi použil 'find . -maxdepth 0 -type f -iname "*.$1"'
20.12.2005 22:27 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
Rozbalit Rozbalit vše Re: Jak v bashi převedu malá písmena na VELKÁ?
maxdepth 0 asi nebude pracovat, chtělo by to 1

a taky bych se vyprdnul na ten for cyklus a použil u findu -exec
-- Nezdar není hanbou, hanbou je strach z pokusu.
David Watzke avatar 20.12.2005 22:34 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Jak v bashi převedu malá písmena na VELKÁ?
Vyprdnul na for cyklus, jo... Tak teď už v tom mám totální guláš. :-( Jak bys to chtěl tedy udělat?
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
20.12.2005 22:39 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
Rozbalit Rozbalit vše Re: Jak v bashi převedu malá písmena na VELKÁ?
neřeš, plácám blbosti

akorát si dej bacha na mezery v názvech souboru

Koukal jsem do toho tvého skriptu ncoda a všiml si, že používáš češtinu s diakritikou v kódování UTF-8, to nedělej. Když už chceš použít češtinu, tak bez háčků a čárek. Nebo to rovnou piš anglicky.
-- Nezdar není hanbou, hanbou je strach z pokusu.
David Watzke avatar 20.12.2005 22:40 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Jak v bashi převedu malá písmena na VELKÁ?
Mezery jsou (AFAIK) zajištěný. Na tu diakritiku si dám pozor.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
20.12.2005 23:05 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Jak v bashi převedu malá písmena na VELKÁ?
Jasně, 1, hloupý překlep…

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.