Portál AbcLinuxu, 14. května 2025 02:28

Dotaz: bash: vypis urciteho radku

18.10.2006 08:56 Honza
bash: vypis urciteho radku
Přečteno: 3592×
Odpovědět | Admin
Zdravim, potreboval bych pomoci BASHe vypsat urcity radek, nebo posloupnost urcitych radku. Dejme tomu ze mam v nejakem souboru ulozeno:
xxxxxxxxxxxxxxxxxx
yyyyyyyyyyyyyyyyyy
zzzzzzzzzzzzzzzzzz
bbbbbbbbbbbbbbbbbb

A ja bych potreboval vypsat treba radek 3, ale ne pomoci grepu . Take bych potreboval, zjistit na jakem radku se treba nachazi posloupnost zzzzzz a vypsat nasledujicih x radku od vyskytu teto posloupnosti. Diky za kazdnou pomoc
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

18.10.2006 09:00 Pavel1 | skóre: 33
Rozbalit Rozbalit vše Re: bash: vypis urciteho radku
Odpovědět | | Sbalit | Link | Blokovat | Admin
To je nějaký domácí úkol?

Použij sed a dále vyhledávání zde a na googlu.
18.10.2006 09:04 Honza
Rozbalit Rozbalit vše Re: bash: vypis urciteho radku
To bohuzel neni domaci ukol :-(
18.10.2006 10:20 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: bash: vypis urciteho radku
Řešení je ale stejné… :-)
18.10.2006 10:28 cronin | skóre: 49
Rozbalit Rozbalit vše Re: bash: vypis urciteho radku
Odpovědět | | Sbalit | Link | Blokovat | Admin
subor prehnat cez nl, grepom zistit riadok zo zadanym retazcom, cutom zistit, kolky to bol riadok.

Ked uz mame cislo riadku -- zadane alebo zistene predchadzajucim sposobom -- vytailovat vsetky riadky od zadaneho do konca suboru a z toho vyheadovat prvy riadok.
18.10.2006 10:35 Pavel1 | skóre: 33
Rozbalit Rozbalit vše Re: bash: vypis urciteho radku
No, myslím, že sedem by to bylo nejjednoužší, ale cesty jsou růzdné. Ale autor nechce použít grep (nevím proč, právě kvůli této podmínce mi to připadá jako zadání nějakého domácího úkolu).
18.10.2006 10:43 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: bash: vypis urciteho radku
Možná tím chtěl jen neuměle říct, že ho nezajímá řádek s konkrétním vzorkem, ale prostě třetí řádek souboru. Ale i to už se tu řešilo tolikrát, že nemůže být nejmenší problém to během pěti minut najít.
18.10.2006 11:09 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: bash: vypis urciteho radku
man tail(1)

tail +10 < subor |head -1

18.10.2006 12:01 cronin | skóre: 49
Rozbalit Rozbalit vše Re: bash: vypis urciteho radku
Tak ten zobak by snad ani nebol portrebny.
18.10.2006 14:24 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: bash: vypis urciteho radku
Sice funkční, ale dost neefektivní. Raději obráceně…
18.10.2006 14:40 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: bash: vypis urciteho radku
head nemá prepínač -f ...
18.10.2006 14:51 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: bash: vypis urciteho radku
A k čemu ho tady potřebujete?
18.10.2006 14:53 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: bash: vypis urciteho radku
v tomto konkrétnom zadaní? na nič.
v budúcom zadaní? ktovie :-)
18.10.2006 11:05 Honza
Rozbalit Rozbalit vše Re: bash: vypis urciteho radku
Odpovědět | | Sbalit | Link | Blokovat | Admin
Diky moc za rady, podarilo se, ale ted mam zase jiny problem. Mam nekaky takovy skript:

cat $LOGSOUBOR | grep vyraz | tr -d s |awk '{print $4}'| while read L
do
if [ "$L" -ge 2 ] ; then
echo "CHYBA S CASEM $I"
fi
done;

Radek z LOGSOUBORU vypada zhruba takto:
23:54:01 vyraz ? 5s 10244kB 24dbid
Skript dela ze prohlidne soubor a vypise mi hodnotu casu kdyz je rovno, vetsi nez 2. No a muj problem je ze kdyz tam je ta chyba tak vypsat i cely puvodni radek, at vim kde nesouhlasil cas, nebo popripade cislo radku na kterem je chyba. Snad jsem to dobre vysvetlil...
18.10.2006 11:18 Jirka | skóre: 36
Rozbalit Rozbalit vše Re: bash: vypis urciteho radku
cat -n soubor - vypíše sloupec s čísly řádků, pak ovšem musíte upravit zbytek roury a tisknout vic sloupcu.
18.10.2006 11:36 Pavel1 | skóre: 33
Rozbalit Rozbalit vše Re: bash: vypis urciteho radku
Když vyjdu z toho tvého a s co nejméně změnami :
cat $LOGSOUBOR | grep vyraz | while read Radek
do
  L="$(echo "$Radek" | awk '{print $4}' | tr -d s)"  # nebo: "$Radek" | cut -f 4 -d " " | tr -d s
  if [ "$L" -ge 2 ]; then
    echo "CHYBA S CASEM $I"
    echo "$Radek"
  fi
done;
18.10.2006 11:39 Kníže Ignor | skóre: 19 | blog: stoupa
Rozbalit Rozbalit vše Re: bash: vypis urciteho radku
uprav ten první řádek tak, aby ti to vypisovalo ve tvaru $4 zbytek-řádku (uprav tedy ten awk, tr vypusť), pak read $x $l, v $x budeš mít sice tu hodnotu i s tím koncovým 's', ale to myslím nevadí
Jestli máš zálohu mého blogu, tak mi ji pošli. Nějak jsem si ho smazal :-)
18.10.2006 11:41 Kníže Ignor | skóre: 19 | blog: stoupa
Rozbalit Rozbalit vše Re: bash: vypis urciteho radku
"zbytek-řádku" má samozřejmě znamenat celý řádek :-)

prostě něco jako {print $4; print;}
Jestli máš zálohu mého blogu, tak mi ji pošli. Nějak jsem si ho smazal :-)
18.10.2006 11:16 Jirka | skóre: 36
Rozbalit Rozbalit vše Re: bash: vypis urciteho radku
Odpovědět | | Sbalit | Link | Blokovat | Admin
sed -n '3p' soubor_s_textem - vypíše třetí řádek
18.10.2006 14:06 hondza
Rozbalit Rozbalit vše Re: bash: vypis urciteho radku
sed -n '3p' soubor_s_textem - vypíše třetí řádek

to jo, ale porad to stejne projede cely vstup.
sed -ne '3{p;q}' soubor_s_textem
vypise treti radek a skonci.
18.10.2006 12:06 Honza
Rozbalit Rozbalit vše Re: bash: vypis urciteho radku
Odpovědět | | Sbalit | Link | Blokovat | Admin
Moc vsem dekuji :-)
18.10.2006 12:34 petr
Rozbalit Rozbalit vše Re: bash: vypis urciteho radku
Odpovědět | | Sbalit | Link | Blokovat | Admin
A proč to nenapsat rovnou v AWKu?
file: program.awk
=================

{
    while ((getline line < inputFile) > 0) {
        # process the line `line'
    }

    close(inputFile);
}
Podle mě je to nejelegantnější...
18.10.2006 13:12 maik
Rozbalit Rozbalit vše Re: bash: vypis urciteho radku
Odpovědět | | Sbalit | Link | Blokovat | Admin
man sed
man awk
:)

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.