Portál AbcLinuxu, 10. května 2025 19:06

Dotaz: Problém s ani nevím jak to nazvat :(

2.3.2013 00:00 MaiKL
Problém s ani nevím jak to nazvat :(
Přečteno: 654×
Odpovědět | Admin
Ahoj, může na to někdo mrknout proč to nejde?
tohle funguje ale tohle nechci
AAA=$(</tmp/var)
echo "${AAA%%_*}" > /tmp/add_var
chci tohle řešení ale tohle nefunguje
echo "${$(</tmp/var)%%_*}" >> /tmp/add_var
echo "${`</tmp/var`%%_*}" > /tmp/add_var
echo "${$(cat /tmp/var)%%_*}" > /tmp/add_var
echo "${`cat /tmp/.var`%%_*}" > /tmp/add_var
Díky za pomoc

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

2.3.2013 01:51 potato
Rozbalit Rozbalit vše Re: Problém s ani nevím jak to nazvat :(
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nefunguje to, protože to není platná syntaxe. Můžeš s tím nesouhlasit, můžeš proti tomu protestovat, ale to je asi tak všechno, co s tím můžeš dělat. Je třeba přestat náhodně kupit různé konstrukce a pokusit se porozumět, co dělají.

Jednak po ${ musí být jméno proměnné, nikoli její obsah. Mezi jménem a obsahem je setsakramentský rozdíl.

Navíc se jméno proměnné stejně neexpanduje (kromě nepřímého jména s !), expanduje se pouze část za případným operátorem (zde %%). Jak přesně, to je popsáno v sekci Parameter Expansion.

Kromě toho polovina těch konstrukcí uvnitř jsou úplné nesmysly, jako např. `</tmp/var`, což přeloženo do češtiny znamená ‚spusť příkaz </tmp/var (což nic neudělá, protože to přesměruje vstup prázdného příkazu) a jeho výstup (který je tedy vždy prázdný) sem vlož`, tudíž by to nemělo smysl ani v místě, kde by to shell expandoval.
2.3.2013 14:05 MaiKL
Rozbalit Rozbalit vše Re: Problém s ani nevím jak to nazvat :(
Odpovědět | | Sbalit | Link | Blokovat | Admin
Fakt nikdo neporadí s tím zápisem bez použití proměnné?
2.3.2013 14:14 chrono
Rozbalit Rozbalit vše Re: Problém s ani nevím jak to nazvat :(
Čo to má vlastne robiť?
2.3.2013 14:30 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Problém s ani nevím jak to nazvat :(
Když nevíme co to má dělat těžko někdo poradí.

Takže napiš jaké proměnné máš, co v nich je, co se má udělat, jaký výstup se má vypsat, jak se to bude spouštět atd....
2.3.2013 16:01 MaiKL
Rozbalit Rozbalit vše Re: Problém s ani nevím jak to nazvat :(
Odpovědět | | Sbalit | Link | Blokovat | Admin
OK položím dotaz lépe a celý

1) mám soubor /tmp/var
2) soubor /tmp/var obsahuje text: aaa a aa _ bb bbbbbb b bb 
3) do jednoho souboru /tmp/lt_var chci uložit text který je před podtržítkem v souboru /temp/var
4) do druhého souboru /tmp/rt_var chci uložit text který je za podtržítkem v souboru /temp/var
Řešení je samozřejmě jednoduché ale potřebuji jiné řešení, bez použití proměnných
TXT=$(</tmp/var)
echo "${TXT%%_*}" > /tmp/lt_var
echo "${TXT##*_}" > /tmp/rt_var
proto jsem se snažil už zoufale o takové nesmyslné výkřiky do tmy s nadějí že to půjde :-(
echo "${$(</tmp/var)%%_*}" > /tmp/lt_var
Díky za každý tip ;)
2.3.2013 17:12 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Problém s ani nevím jak to nazvat :(
Důvod proč to nemůže být tak jak jsi to napsal?

Čuchám domácí úkol.

Co použít sed a vyzobnout začátek a konec a uložit do souboru.
Petr Bravenec avatar 2.3.2013 17:14 Petr Bravenec | skóre: 43 | blog: Bravenec
Rozbalit Rozbalit vše Re: Problém s ani nevím jak to nazvat :(
#!/bin/sh

awk -F "_" '{print $1;}' </tmp/var > /tmp/lt_var
awk -F "_" '{print $2;}' </tmp/var > /tmp/rt_var
Petr Bravenec - Hobrasoft s.r.o.
2.3.2013 18:37 MaiKL
Rozbalit Rozbalit vše Re: Problém s ani nevím jak to nazvat :(
Zajímavé ;) awk neznám, a šlo by ten příkaz poopravit aby do toho souboru neukládal nadbitečné bílé znaky? Myslím tím že se tam neuloží
" dsa   dsa asd   sad        dsa  d  dd               ddd    w"
ale jen
"dsa dsa asd sad dsa d dd ddd w"
Jinak díky moc za help
2.3.2013 22:55 potato
Rozbalit Rozbalit vše Re: Problém s ani nevím jak to nazvat :(
Ano, a teď je ta pravá chvíle napsat, co doopravdy potřebuješ, aby k něčemu konvergovala ona posloupnost ,napsali jste mi příkaz, který dělá přesně to, co jsem požadoval, ale já chci něco jiného`.

Normalizaci mezer lze udělat např. takhle (používám sed namísto awk, lze to samozřejmě řešit kterýmkoli):
sed -r 's/[[:space:]]*_.*//;s/[[:space:]]+/ /;s/^ //' </tmp/var >/tmp/lt_var
sed -r 's/.*_[[:space:]]*//;s/[[:space:]]+/ /;s/ $//' </tmp/var >/tmp/rt_var
Při použití BSD sedu namísto GNU sedu je zapotřebí option -E namísto -r.
3.3.2013 16:20 Matlák
Rozbalit Rozbalit vše Re: Problém s ani nevím jak to nazvat :(
lol. Tak chceš se něco naučit nebo děláš copy-paste? A to se vsadím že je to úkol do školy..
3.3.2013 19:21 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Problém s ani nevím jak to nazvat :(
Však já to tvrdím že je to úkol už od začátku a on se nechce přiznat. :-)

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.