Portál AbcLinuxu, 9. května 2025 20:51
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.
sort
a uniq
, je to tam celkem srozumitelně popsané.
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:
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
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 -cale 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"?
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.
< subor.txt tr -sc "a-zA-Z0-9" "\n" | sort | uniq -c
< soubor.txt tr "[[:blank:]()\.\!]+" "\n" | sort -u
sakra, nějak jsem si nepřečetl pořádně celé zadání :-/
< soubor.txt tr "[[:blank:]()\.\!]+" "\n" | sort | uniq -c
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.