Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: Cendas 22 Prosince 2011, 18:19:12

Název: Výběr části řetězce v uvozovkách [vyřešeno]
Přispěvatel: Cendas 22 Prosince 2011, 18:19:12
Ahoj Píšu jeden skript v bashi a z tohohle řádku:
<symbol number="1" name="Fair" var="01d" />
potřebuju to co je v uvozovkách načíst do proměnné.
Poradí někdo. Tedy každé uvozovky je jedna proměnná.
Název: Re:Výběr části řetězce v uvozovkách
Přispěvatel: GdH 22 Prosince 2011, 18:53:37
Záleží jaký je kontext, kdybych přepokládal jen strukturu z předloženého řetězce, vypreparoval bych z toho definici proměnných třeba takto:

Kód: [Vybrat]
eval `echo '<symbol number="1" name="Fair" var="01d" />' | sed 's/<symbol  *\(.*"\) *\/>/\1/'`
proměnné budou $number, $name a $var.

Edit: blbnu, opravuju, co opravovat netřeba, původní platí, max s jednou mezerou navíc :)

Název: Re:Výběr části řetězce v uvozovkách
Přispěvatel: daysleeper 22 Prosince 2011, 19:03:27
Pěkné! Ale funguje jenom v dashi, v bashi
Kód: [Vybrat]
$ eval `echo '<symbol number="1" name="Fair" var="01d" />' | sed 's/<symbol *\(.*"\) *\/>/\1/'`
1: command not found

Bash verze
Kód: [Vybrat]
$ bash --version | head -1
GNU bash, version 4.1.5(1)-release (i686-pc-linux-gnu)
Kód: [Vybrat]
$ a=$(echo '<symbol number="1" name="Fair" var="01d" />' | sed 's/<symbol *\(.*"\) *\/>/\1/')
$ echo $a
number= 1  name= Fair  var= 01d

EDIT: moje chyba, měl jsem špatně nastavené IFS, funguje to
Název: Re:Výběr části řetězce v uvozovkách
Přispěvatel: Cendas 22 Prosince 2011, 19:18:05
Díky mě to funguje.  :)
Název: Re:Výběr části řetězce v uvozovkách
Přispěvatel: Cendas 23 Prosince 2011, 13:14:38
Ještě bych potřeboval jestli by to nešlo trochu upravit protože name tam mám vícekrát.
Jestli by to nešlo aby to vypsalo takhle?
symbol_number= 1  symbol_name= Fair  symbol_var= 01d
Název: Re:Výběr části řetězce v uvozovkách
Přispěvatel: Cendas 25 Prosince 2011, 13:28:31
Tak jsem to vyřešil že si ty proměnné přiřadím do jiných.
Lepší řešení mě nenapadlo.