Автор Тема: Парсване на файл  (Прочетена 2209 пъти)

San

  • Новаци
  • *
  • Публикации: 2
    • Профил
Парсване на файл
« -: Apr 19, 2015, 01:33 »
Здравей те,
нуждая се от малко помощ. Проблема ми е следният.
Имам подобен файл:

Код:
2 1
2 1
3 1
2 2
4 2
6 3
2 3
12 4
24 4

Лявото число е брой жертви, а дясното е месеца.
Трябва да изкарам следния резултат:

Код:
7 1
6 2
9 3
36 4

Тоест месеца и общо броя жертви за този месец.
Не трябва да се използват нито цикли ( for while ) нито awk.

Благодаря предварително.
Активен

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: Парсване на файл
« Отговор #1 -: Apr 19, 2015, 05:37 »
/извън темата

Какви жертви бе, човек? Не можа ли да измислиш нещо друго за примера? ;D

/по темата

Първо, не си казал на какъв програмен език трябва да е, но щом споменаваш awk, значи сигурно си мислиш за bash. Поправи ме, ако греша!
Второ, ти какво разбираш под цикъл? Дали е всичко, в което има някакво повторение на действие, или само известни думички за цикъл като for и while? Ето ти пример, който извежда желания резултат:
Код
GeSHi (Bash):
  1. seq 12 | xargs -I {} sh -c 'sum=$(grep -e " {}$" TEXT_FILE.TXT | cut -d" " -f1 | paste -sd+ | bc); if [ -n "$sum" ]; then echo $sum {}; fi'
Тук не използвам известни думички за цикъл, но по начина си на работа може да се нарече цикъл. Всъщност, в този ред има една торба цикли :)
Ако не разбираш какво пише в командата, TEXT_FILE.TXT е файлът с данните ти, а числото към seq е 12, за да се обхванат всички месеци. За останалото има документация ;)
« Последна редакция: Apr 19, 2015, 06:03 от neter »
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

BRADATA

  • Напреднали
  • *****
  • Публикации: 833
  • Distribution: Slackware/Mint/CentOS
  • Window Manager: console/KDE/LXDE
    • Профил
    • WWW
Re: Парсване на файл
« Отговор #2 -: Apr 19, 2015, 07:26 »
Neter :) Много елегантно решение...

/извън темата
жертви са щото такава са му я дали в училище задачата :)

Активен

go_fire

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 8780
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
Re: Парсване на файл
« Отговор #3 -: Apr 19, 2015, 08:42 »
Щом е училищна задача, значи го карат да използва рекурсивни функции, сиреч такива викащи сами себе си. Обаче бих се учудил в училище да им искат баш, по-скоро искат Ц++. В унито по-имало шанс да е баш.
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear

San

  • Новаци
  • *
  • Публикации: 2
    • Профил
Re: Парсване на файл
« Отговор #4 -: Apr 19, 2015, 12:34 »
Съжалявам че не уточних, но да става въпрос за bash. Много ти благодаря neter определено много по елегантно решение от това до което бях стигнал аз.
Активен