Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Výběr části řetězce v uvozovkách [vyřešeno]  (Přečteno 1646 krát)

Cendas

Výběr části řetězce v uvozovkách [vyřešeno]
« kdy: 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á.
« Poslední změna: 27 Prosince 2011, 10:05:20 od Cendas »

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re:Výběr části řetězce v uvozovkách
« Odpověď #1 kdy: 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 :)

« Poslední změna: 22 Prosince 2011, 20:03:57 od GdH »

daysleeper

  • Stálý člen
  • **
  • Příspěvků: 1206
Re:Výběr části řetězce v uvozovkách
« Odpověď #2 kdy: 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
« Poslední změna: 22 Prosince 2011, 19:23:14 od daysleeper »

Cendas

Re:Výběr části řetězce v uvozovkách
« Odpověď #3 kdy: 22 Prosince 2011, 19:18:05 »
Díky mě to funguje.  :)

Cendas

Re:Výběr části řetězce v uvozovkách
« Odpověď #4 kdy: 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

Cendas

Re:Výběr části řetězce v uvozovkách
« Odpověď #5 kdy: 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.

 

Provoz zaštiťuje spolek OpenAlt.