Portál AbcLinuxu, 6. května 2025 22:56

Dotaz: Jak odstranit nuly pomocí bash

16.2.2014 23:18 Beginer
Jak odstranit nuly pomocí bash
Přečteno: 388×
Odpovědět | Admin
Ahoj, mám soubor ve kterém je uloženo číslo ve tvaru "000005978" a potřebuji odstranít ty levostraný nuly, poradí někdo? Díky moc
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Jendа avatar 16.2.2014 23:23 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Jak odstranit nuly pomocí bash
Odpovědět | | Sbalit | Link | Blokovat | Admin
echo 000005978 | sed -re "s/^0+//"
5978
16.2.2014 23:35 Beginer
Rozbalit Rozbalit vše Re: Jak odstranit nuly pomocí bash
Děkuji a jinak než sed-em to nejde?
Fuky avatar 17.2.2014 00:07 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: Jak odstranit nuly pomocí bash
$ echo 00000012000 >/tmp/filename.txt
$ variable=$(cat /tmp/filename.txt)

$ echo ${variable##*(0)}
12000
17.2.2014 01:45 _PEPA_
Rozbalit Rozbalit vše Re: Jak odstranit nuly pomocí bash
Fuky: A pak ses probudil :-D
17.2.2014 08:03 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Jak odstranit nuly pomocí bash
_PEPA_: A pak jsi usnul.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
17.2.2014 07:59 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Jak odstranit nuly pomocí bash

echo ${variable##*0}

Ty ( ) jsou tma navíc.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
17.2.2014 08:57 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Jak odstranit nuly pomocí bash
mike@unicorn:~> var=00000012000
mike@unicorn:~> echo ".${var##*0}."
..
mike@unicorn:~> echo ".${var##*(0)}."
.12000.
17.2.2014 09:08 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Jak odstranit nuly pomocí bash
Rozumím, nicméně:
$ var="000005978"
$ echo "${var##*0}"
5978
$ echo ""{var##*(0)}"
000005978
> var=00000012000
> echo ".${var##*0}."
..
> echo ".${var##*(0)}."
.00000012000.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
17.2.2014 09:28 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Jak odstranit nuly pomocí bash
Ju, bez závorek je to špatně (nefunguje na čísla obsahující nuly, což mi nedošlo) - beru zpět, ale se závorkami je třeba mít:
shopt -s extglob
jinak to dopadne takto.

To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
17.2.2014 09:40 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Jak odstranit nuly pomocí bash
No, osobně bych stejně použil spíš $[10#$var]
17.2.2014 10:01 Beginer
Rozbalit Rozbalit vše Re: Jak odstranit nuly pomocí bash
Chlapy díky a jaký je rozdíl mezi zápisem
$[10#$var]
a
${10#$var}
Díky
17.2.2014 10:18 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Jak odstranit nuly pomocí bash

Velký. :-)

První znamená "číslo, které je v proměnné var (v desítkové soustavě)" (tedy aspoň za předpokladu, že proměnná obsahuje jen číslice, ne třeba "1+1").

To druhé je "hodnota desátého parametru po odstranění případné nejmenší počáteční části odpovídající obsahu proměnné var (ve smyslu expanze wildcards)".

17.2.2014 10:42 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Jak odstranit nuly pomocí bash
To mě ani nenapadlo (použil jsem to snad jen 1× a pro 16). Asi bych použil sed.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
17.2.2014 11:41 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Jak odstranit nuly pomocí bash
Já to používám docela často právě na to, aby případné nuly na začátku nezpůsobily, že se bude číslo chápat jako zápis v osmičkové soustavě.
17.2.2014 11:52 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Jak odstranit nuly pomocí bash
Jo-jo, myslím, že to začnu používat, jsem to obvykle řešil jen přičtením nuly a to právě má ten hloupý efekt, pokud je nula na začátku.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†

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.