Portál AbcLinuxu, 15. května 2024 23:41


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

Diskuse byla administrátory uzamčena.

24.11.2003 18:18 me
Rozbalit Rozbalit vše Lepsi priklad prosim
Domnivam se, ze by bylo pro zacatecniky uzitecnejsi, kdyby jim byl nabidnut priklad, ktery budou moci pouzit v beznem zivote. Priklad u prikazu sed je sice zajimavy ale neprosto neuzitecny. Radsi by jsem se naucil jak vypreparovat prvni radek souboru, jak ziskat radek posledni, jak ziskat vse krome prvniho radku, ... Proste par jednoduchych prikazu, ktere se obcas hodi a pritom demonstruji moznosti a pouziti sed editoru. A az potom treba nejaky absurdni priklad, demonstrujici rozsirene moznosti...
24.11.2003 20:47 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Lepsi priklad prosim
$ sed -n '1p' < ./soubor
První řádek
$ sed -n '$p' < ./soubor
Poslední řádek
$ sed -n '1!p' < ./soubor
Druhý řádek
Třetí řádek
Poslední řádek

Chce ještě někdo zodpovědět nějaký konkrétní příklad?

3.1.2004 14:41 Jaroslav Novak
Rozbalit Rozbalit vše Lepsi priklad prosim
Zajimalo by me, jak projit nekolik souboru v adresari a v kazdem nahradit dane slovo nejakym jinym. To je takovy priklad ze zivota.
3.1.2004 18:34 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše RE: Lepsi priklad prosim
#!/bin/bash

mv $1 $1.old
sed 's/ahoj/nazdar/' $1.old > $1
#rm $1.old
exit 0

$ find -type f | xargs -i ../skript.sh {}
3.1.2004 20:02 Jaroslav Novak
Rozbalit Rozbalit vše RE: Lepsi priklad prosim
Dekuji, a dalo by se pred kazde nalezene "ahoj" vlozit odradkovani? Nebo nahradit "ahoj" znakem pro odradkovani a opet "ahoj". Jenom me nenapada jak napsat ten znak pro odradkovani. Nebo i jine znaky, jako treba tabulator.
24.2.2004 00:01 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše RE: Lepsi priklad prosim
$ cat soubor
nazdarahojnazdarahojnazdarahojnazdar

$ sed 's/ahoj/\n/g' < ./soubor
nazdar
nazdar
nazdar
nazdar

$ sed 's/\(ahoj\)/\n\1\n/g' < ./soubor
nazdar
ahoj
nazdar
ahoj
nazdar
ahoj
nazdar
20.3.2011 16:21 conf
Rozbalit Rozbalit vše Re: RE: Lepsi priklad prosim
zdravim, chtel bych se zeptat jestli je nejaka moznost jak si v sedu ulozit nalezeny vzorek a pak ho pouzit napr: mám nejakou vetu: testovaci věta je toto. a nad kazdym radkem souboru mam posloupnost prikazu sed -e "s/blabla/" a v jednu chvili potrebuju najit vzorek věta a nahradit ho napr. světak ...takze světak

je tedy nejak mozne uprostred sedu si vzorek ulozit do promene nb ho primo prenest do prostred vkladane substituce? děkuji
23.2.2004 15:32 JaSel | skóre: 17 | blog: kseles
Rozbalit Rozbalit vše Lepsi priklad prosim
Nejak to nemuzu rozlousknout: Potrebuju vymazat vsechny radky, na kterych je slovo 'Error'. Predem dik za radu.
23.2.2004 23:31 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše RE: Lepsi priklad prosim
$ cat soubor
Řádek 1
Error 2
Řádek 3
Error 4
$ egrep -v '^Error.+$' < ./soubor
Řádek 1
Řádek 3
4.3.2004 15:53 Jan Perich
Rozbalit Rozbalit vše Prosim o radu
Každopádně díky za váš seriál. Je super.

Vícekrát jsem řešil problém, že potřebuju získat ze souboru nějakou konkrétní informaci a tu pak předat do nějaké proměnné.

napr: Někde v souboru (o více řádcích) by se mělo vyskytovat "Access Point: MAC adresa"

řešil jsem to takhle:

APMAC=`cat soubor | \/bin/sed -e \ "/Access Point/!d /Access Point/s/.*Access Point: \([0-9A-F:]\{17\}\) */\1/ "`

ale zdá se mi to hrozně krkolomné. Šlo by to zjednodušit (nebo dělat nějak úplně jinak?)
8.3.2004 20:38 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše RE: Prosim o radu
sed -n 's/.*Access Point: \([0-9A-F:]\{17\}\).*/\1/p' soubor
6.3.2005 11:17 J. Krajkář
Rozbalit Rozbalit vše Použití filtru...
Dobrý den, jsem začátečník v Bashi i v Linuxu jako takovém a řeším teď takový skriptík, který načte své argumenty a potom s nimi operuje jako s čísly (přesněji řečeno - snaží se je seřadit), ale pokud zadám do argumentů nečíselnou hodnotu (třeba ahoj), tak ostatní čísla sice seřadí, ale vypíše hodně chybových hlášek a to ahoj mezi čísly zůstane. Nešlo by přes grep zařídit, aby nečíselné argumenty ignoroval? Jestli ano, tak jak?
7.3.2005 12:33 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: Použití filtru...

Můžeš např. všechno kromě čísel a mezer smazat.

$ echo "1234 ahoj 4321" | sed -n 's/[^0-9 ]//gp'
1234  4321

Ale podle mě bude lepší zkontrolovat všechny argumenty a v případě, že uživatel v některém z nich zadá cokoliv jiného než číslo, zakřičí se na něj a program se ukončí.

for argument in $@; do
  if [ $(echo $argument | grep '[^0-9]' | wc -l) -ne 0 ]; then
    echo "Argument '$argument' není číslo!!!"
    exit 1
  fi
done
10.3.2005 16:37 J. Krajkář
Rozbalit Rozbalit vše Re: Použití filtru...
Výborně, všecho funguje tak, jak má. Mnohokrát děkuji...
19.12.2006 12:22 poraďte prosím
Rozbalit Rozbalit vše Re: BASH - V
potřebuju poradit jak mám udělat abych do proměnné dostal počet nějakých řetězcu které jsou v souboru
19.12.2006 12:35 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: BASH - V

Rádi Ti pomůžeme, ale specifikuj prosím Tvůj problém jednoznačně, nejlepší bude když uvedeš konkrétní příklad, co máš a co z toho chceš dostat.

19.12.2006 12:47 poraďte prosím
Rozbalit Rozbalit vše Re: BASH - V
No mám adresář ahoj a uvnitř mám soubory. Mam vybrat soubory s příponou xml, které obsahujou takové značky jako v html kodu no a já chci spočítat kolik je těch značek v každém souboru a zapsat do souboru který se bude jmenovat jako orinalni_nazev_souboru.statistika.txt
26.12.2006 14:31 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: BASH - V

$ cat pocet_tagu.sh
#!/bin/bash

if [ $# -ne 1 ]; then
  echo "Usage: $0 file.xml"
  exit
fi

echo -e "\n$1:"

tags_all=$(cat $1 |sed -n 's/[^>]*\(<[^ >]\+[ >]\)/\1\n/gp' |grep "^<[^\/]" |sort)
tags_uniq=$(echo $tags_all |sed 'y/ /\n/' |uniq)

for tag in $tags_uniq; do
  count=$(echo $tags_all |sed 'y/ /\n/' |grep $tag |wc -l)
  printf "  %-20s %10i\n" $tag $count
done

$ find -type f -regex ".*\.xml" |xargs -i ./pocet_tagu.sh {}

./soubor02.xml:
  <accelerator                  2
  <!DOCTYPE                     1
  <glade-interface>             1
  <child>                     236
  <child                      250
  <packing>                   206
  <placeholder/>                2
  <property                  2521
  <signal                      36
  <widget                     258
  <?xml                         1

./soubor01.xml:
  <kocka>                       2
  <pes>                         2
  <xml>                         1
  <zvire>                       2

30.11.2007 01:08 pez
Rozbalit Rozbalit vše Re: BASH - V
;-)
IFS="<";
set -- $(cat "$1");
for tag in "$@" ; do
        IFS=" >";
        set -- $tag;
        echo "$1";
done | sort | uniq -c
30.11.2007 01:19 pez
Rozbalit Rozbalit vše Re: BASH - V
nebo jeste kratsi:
IFS="<";
set -- $(cat "$1");
for tag in "$@" ; do echo "${tag%%[ >]*}"; done | sort | uniq -c
10.1.2007 20:37 Jozef Behrán
Rozbalit Rozbalit vše Vyhodnocování tildy
V článku chybí, že metaznak "~" se vyhodnocuje pouze pokud je na začátku argumentu:
$ echo ~
/home/jozef
$ echo a~
a~
$ echo a\ ~
a ~
10.1.2007 21:00 Jozef Behrán
Rozbalit Rozbalit vše Třeba pri používání "--prefix"
Což může mít význam třeba při kompilaci:
$ ./configure --prefix=~/myprogs
configure: error: expected an absolute directory name for --prefix: ~/myprogs
$ ./configure --prefix=$HOME/myprogs
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
... atd. (takhle mi to už funguje) ...
P.S. Takhle kompiluju software pokud nechci spouštět make install jako root. Prostě jsem si do .bash_profile přidal příkaz který přidal ~/myprogs/bin do PATH a můžu takhle zkompilovaný a nainstalovaný programy normálně spouštět jako kdyby byli kompilované instalované "normálním způsobem". Zatím mi všechny takhle kompilované a instalované programy fungovali bez problémů (mezi nimi jsou i takové fajnové vychytávky jako třeba mplayer). Dělám to tak, protože jsem poněkud paranoidní co se týče poskytování ROOT oprávnění neznámým skriptům a programům (čti: normální sysadmin).
21.4.2014 16:13 pomo
Rozbalit Rozbalit vše Re: BASH - V
potreboval by som zo stringu ktory vyyera nejak tak, ze vsetko je jeden riadok " ****** 2010 ahoj = 2010 ahoj = afhdufh "atd ze mi zoberie vsetko co zacina 4 cislom a konci = a vzpice mi to na konzulu a vzdy na novy riadok

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.