The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Задан текстовый файл..."
Отправлено temny, 03-Дек-09 17:35 
>>Вот, порадуй преподавателя:
>
>Ндамс... Ну, теперь, когда мы школяру неинтересны, расскажите пожалуйста,
>
>>$ dmesg > file.txt
>>$ f=`cat file.txt`
>
>а файл >128К? а >1M? а с символами $, !, <, > и т.п.??

Длинные файлы будут обрабатываться существенно медленнее, чем в предложеном вами решении, но всё-таки будут :)
А вот как могут навредить спецсимволы я пока не вижу, во всяком случае вариант
(dmesg ; echo $'!asd!\n >> <\n$$asd\n!$') > file.txt
отработал без ошибок и с верной статистикой.

>${i^^} - это на каком шеле? и "предупреждать надо"(тм)

$ i=AbC; echo $i - ${i^^} - $BASH_VERSION
AbC - ABC - 4.0.35(0)-release

>Меня б "sed -i" спас :), но я б с самого начала
>по-другому сделал.

В реализациях sed, которые я нахожу в зоне прямой видимости, -i это "edit files in place", но я думаю понял, что вы имели в виду :) - Согласен, вместо ${i^^} можно использовать "case insensetive regex".

>$ time zcat spec.txt.gz |wc -c
>1435340
>$ time ( zcat spec.txt.gz |egrep -o "[a-z][^ ]+"|egrep -o "^[a-z]"|tr [:upper:]
>[:lower:]|sort|uniq -c|sort -k2 )
>  64605 a

...
>real    0m16.397s
>user    0m15.517s
>sys     0m0.816s
>$ _
>
>Чего-то моментальненько...
>
>Ждём варианта на %) перле -- в три раза короче и в
>10 раз быстрее. |-) С бенчмарками!!

Перла я не знаю, но могу предложить вот такой вариант на awk - не короче, но быстрее:
$ time ( a=`echo {a..z}`;echo `head -c 1435340 /usr/local/info/mysql.info`|awk 'BEGIN{RS=" ";FS="";r="'${a// }'";split(r,a,"");} /^[a-zA-Z]/ {q[index(r,tolower($1))]++}END{for(i=1;i<=length(r);i++) printf "%s: %d\n",a[i],q[i];}' )
a: 36506
b: 13008
c: 16351
d: 29531
e: 6163
f: 31214
g: 9718
h: 9949
i: 27468
j: 5505
k: 21601
l: 16672
m: 69568
n: 20985
o: 19223
p: 23766
q: 5697
r: 22148
s: 41965
t: 48941
u: 20232
v: 12933
w: 49770
x: 138
y: 8012
z: 124

real    0m4.396s
user    0m2.830s
sys     0m1.101s

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.

На сайте действует частичное премодерирование - после публикации некоторые сообщения от анонимов могут автоматически скрываться ботом. После проверки модератором ошибочно скрытые сообщения раскрываются. Для ускорения раскрытия можно воспользоваться ссылкой "Сообщить модератору", указав в качестве причины обращения "скрыто по ошибке".



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру