Portál AbcLinuxu, 9. května 2025 20:51

Dotaz: Skript - domácí úkol: pocetslov.sh

23.5.2009 11:01 Marcos
Skript - domácí úkol: pocetslov.sh
Přečteno: 908×
Odpovědět | Admin

Potreboval by som spravit nieco taketo...


Vytvorit skript pre Bourne shell, ktorý spĺňa nasledovné požiadavky:
Nazov skriptu: pocetslov.sh

Syntax:
pocetslov.sh subor.txt

Funkcia:
po spustení z príkazového riadku , kde vstupným parametrom je ľubovolný
textový súbor, vypíše všetky slová zo zadaného súboru v abecednom poradí.
Slová, ktoré sa v súbore vyskytujú viackrát budú uvedené iba jeden raz a pri
každom takomto slove bude číslom uvedený počet výskytov.
V prípade, že nebude zadaný žiadny vstupný parameter, program vypíše chybovú
hlášku.

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

Odpovědi

Fuky avatar 23.5.2009 11:26 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: SKRIPT
Odpovědět | | Sbalit | Link | Blokovat | Admin
Seriál: BASH
Seriál o BASHi
-- RÁMO: psí tábor , ETriatlon: Výuka plavání
Jendа avatar 23.5.2009 11:26 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: SKRIPT
Odpovědět | | Sbalit | Link | Blokovat | Admin
To je úkol do školy?

Koukni na manuál sort a uniq, je to tam celkem srozumitelně popsané.
default avatar 23.5.2009 11:49 default | skóre: 22 | Madrid
Rozbalit Rozbalit vše Re: SKRIPT
Odpovědět | | Sbalit | Link | Blokovat | Admin
Příloha:

Co takhle:

#!/bin/bash

if [ $# -ne 1 ]; then
    echo 'invalid usage'
    exit 1
fi

if [ \! -r "$1" ]; then
    echo "input file '$1' does not exist or is not readable"
    exit 1
fi

awk '{ for (i = 1; i <= NF; i++) { print $i; } }' "$1" | sort | uniq -c | awk '{ print $2 " " $1; }'

exit $?

Mělo by to fungovat na:

23.5.2009 12:17 Marcos
Rozbalit Rozbalit vše Re: SKRIPT

Default dakujem ti velmi velmi pekne...pomohol si mi...klobuk dole ze si ani za to nic nechcel....niet vela takychto ludi...Este raz Klobuk dole a vrela vdaka

23.5.2009 22:40 Ash | skóre: 53
Rozbalit Rozbalit vše Re: SKRIPT
Moc nechápu proč to složité
awk '{ for (i = 1; i <= NF; i++) { print $i; } }' "$1" | sort | uniq -c | awk '{ print $2 " " $1; }'
já bych vystačil s
sort a.txt | uniq -c
ale každopádně si říkám jestli by nemělo být číslo s počtem výskytů jen "pri takých slovách ktoré sa v súbore vyskytujú viackrát"?
23.5.2009 22:41 Ash | skóre: 53
Rozbalit Rozbalit vše Re: SKRIPT
protože v opačném případě je to dost prmitivní úloha na použití test, sort a uniq
default avatar 23.5.2009 22:59 default | skóre: 22 | Madrid
Rozbalit Rozbalit vše Re: SKRIPT

Proč tak složitě?

Protože na jedné řádce se může vyskytovat více slov. ;-)

Ale každopádně své řešení neobhajuji. Určitě by to šlo udělat lépe.

23.5.2009 23:48 Ash | skóre: 53
Rozbalit Rozbalit vše Re: SKRIPT
na jedné řádce se může vyskytovat více slov

Aha, díky, to je to co jsem si neuvědomil :D
27.5.2009 09:54 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: Skript - domácí úkol: pocetslov.sh
Odpovědět | | Sbalit | Link | Blokovat | Admin
< subor.txt tr -sc "a-zA-Z0-9" "\n" | sort | uniq -c
27.5.2009 11:16 blondak | skóre: 36 | blog: Blondak | Čáslav
Rozbalit Rozbalit vše Re: Skript - domácí úkol: pocetslov.sh

< soubor.txt tr "[[:blank:]()\.\!]+" "\n" | sort -u

Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
27.5.2009 11:23 blondak | skóre: 36 | blog: Blondak | Čáslav
Rozbalit Rozbalit vše Re: Skript - domácí úkol: pocetslov.sh

sakra, nějak jsem si nepřečetl pořádně celé zadání :-/

< soubor.txt tr "[[:blank:]()\.\!]+" "\n" | sort | uniq -c

Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
27.5.2009 11:40 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: Skript - domácí úkol: pocetslov.sh
njn, neúplné zadanie, nevraví, čo všetko je slovo ...

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.