Portál AbcLinuxu, 9. května 2025 21:03

Dotaz: Bash - Jak získat číslo

19.6.2015 22:18 jAR
Bash - Jak získat číslo
Přečteno: 559×
Odpovědět | Admin
Ahoj, potřeboval bych poradit, jak jednoduše získat z proměnné číslo, které se nachází na začátku řetězce. Problém je v tom, že se mění počet nul před číslem.

Příklad:
var="0000000001 dlouhý text" # potřebuji získat "1"
var="000008 dlouhý text"     # potřebuji získat "8"
var="01108 dlouhý text"      # potřebuji získat "1108"
Děkuju za pomoc.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

19.6.2015 22:40 johniez | skóre: 17 | blog: xyz | Praha
Rozbalit Rozbalit vše Re: Bash - Jak získat číslo
Odpovědět | | Sbalit | Link | Blokovat | Admin
v="00001 ssa qwe"; v=${v%% *}; echo $((v))

1

19.6.2015 22:46 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Bash - Jak získat číslo

Takhle to neprojde hned na druhém příkladu (a na třetím také ne). Je potřeba explicitně určit základ:

  v="000008 dlouhý text"; echo $[10#${v%% *}]
19.6.2015 22:50 jAR
Rozbalit Rozbalit vše Re: Bash - Jak získat číslo
Děkuju moc, a to číslo 10 znamená, že to bude fungovat maximálně na 10 nul ?
19.6.2015 23:12 chrono
Rozbalit Rozbalit vše Re: Bash - Jak získat číslo
Znamená to, že ide o desiatkovú sústavu (a nie napr. o osmičkovú, ak tam bude niečo ako 07).
19.6.2015 22:49 NN
Rozbalit Rozbalit vše Re: Bash - Jak získat číslo
Odpovědět | | Sbalit | Link | Blokovat | Admin
echo $var | sed -r 's/^[0]+([0-9]+).*/\1/'
xxxxxx avatar 20.6.2015 02:03 xxxxxx | skóre: 23
Rozbalit Rozbalit vše Re: Bash - Jak získat číslo
Odpovědět | | Sbalit | Link | Blokovat | Admin
Spíš jen pro zajímavost; jde to i s pomocí pythonu:
#!/bin/bash

var="0000000001 dlouhý text"

python3 -c "print(int('$var'.split(' ')[0]))"
20.6.2015 13:49 tom
Rozbalit Rozbalit vše Re: Bash - Jak získat číslo
jenze nez to v tom pythonu clovek napise, upadne mu ruka :-P
#!/bin/bash
var="0000000001 dlouhý text"
perl -pe\$_=int<<<$var
xxxxxx avatar 20.6.2015 14:36 xxxxxx | skóre: 23
Rozbalit Rozbalit vše Re: Bash - Jak získat číslo
To jo, ale aspoň to po sobě přečte i druhý den :P
Jesus Jimenez avatar 22.6.2015 15:05 Jesus Jimenez | skóre: 29
Rozbalit Rozbalit vše Re: Bash - Jak získat číslo
:)
Doaenův zákon průtahů: Čím pomaleji pracuješ, tím méně naděláš chyb. -- Murphy
24.6.2015 11:21 tom
Rozbalit Rozbalit vše Re: Bash - Jak získat číslo
1. Z namahani hlavy zanet slach nedostane

2. Pokud to nekdo neprecte, mel by hledat problem v sobe
20.6.2015 15:54 RM
Rozbalit Rozbalit vše Re: Bash - Jak získat číslo
Odpovědět | | Sbalit | Link | Blokovat | Admin
ještě tů neni awk

var=$(echo "0009 dfs sd" | awk '{print $0+0}')
20.6.2015 15:59 RM
Rozbalit Rozbalit vše Re: Bash - Jak získat číslo
úsporněji:

var=$(awk 'BEGIN{print "0009 sdf dfsdf f"+0}')

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.