Разделение чисел в текстовом файле (из 863245 сделать 863 245)

Модератор: Модераторы разделов

pas
Сообщения: 597
Статус: маньяк
ОС: Gentoo

Разделение чисел в текстовом файле

Сообщение pas »

Есть текстовый файл примерного содержимого:
user: 1
size: 665486
pas 665486 65 1890

Необходимо при выводе файла на консоль разделить разряды чисел. Например из 665486 сделать 665_486.
Возможно ли это при помощи стандартных средств баша (или стандартных прог типа cat).
Если возможно подскажите в какую сторону копать.
Спасибо сказали:
v04bvs
Сообщения: 636
ОС: Debian GNU/Linux

Re: Разделение чисел в текстовом файле

Сообщение v04bvs »

pas писал(а):
21.10.2007 17:19
Есть текстовый файл примерного содержимого:
user: 1
size: 665486
pas 665486 65 1890

Необходимо при выводе файла на консоль разделить разряды чисел. Например из 665486 сделать 665_486.
Возможно ли это при помощи стандартных средств баша (или стандартных прог типа cat).
Если возможно подскажите в какую сторону копать.


Я бы это сделал на перле. Может быть можно на sed или awk извернуться.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Разделение чисел в текстовом файле

Сообщение sash-kan »

Фридл, Регулярные выражения, 2-е издание, стр.79-86

$ cat /tmp/0 user: 1 size: 665486 pas 665486 65 1890 $ cat /tmp/0|perl -pe 's/(?<=\d)(?=(?:\d\d\d)+(?: |_|$))/_/g' user: 1 size: 665_486 pas 665_486 65 1_890
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
pas
Сообщения: 597
Статус: маньяк
ОС: Gentoo

Re: Разделение чисел в текстовом файле

Сообщение pas »

Спасибо за ответы.
Вобщем после некоторых изысканий пришел в следующему варианту

Код:

#!/bin/bash time=`date "+%H:%M:%S"` data=`date "+%d.%m.%Y"` echo Статистика потребления за сегодня $data на $time data=`date "+%Y%m%d"` /var/www/cgi-bin/lightsquid/lightparser.pl cat /var/www/html/lightsquid/report/$data/.total>/home/pas/macro/total.txt SIZE=$(egrep "^size:" /home/pas/macro/total.txt|cut -d : -f2) size_pas=$(egrep "^pas" /home/pas/macro/total.txt) size_nata=$(egrep "^nata" /home/pas/macro/total.txt) echo $size_pas>/home/pas/macro/totl echo $size_nata>>/home/pas/macro/totl sed 's/ /:/g' /home/pas/macro/totl>/home/pas/macro/totl2 size_pas=$(egrep "^pas:" /home/pas/macro/totl2|cut -d : -f2) size_nata=$(egrep "^nata:" /home/pas/macro/totl2|cut -d : -f2) if !($SIZE) then humsize=$(echo 'printf("%.2f\n",' $SIZE '/1024/1024);'|perl -); else humsize=0; fi if !($size_pas) then humpas=$(echo 'printf("%.2f\n",' $size_pas '/1024/1024);'|perl -); else humpas=0; fi if !($size_nata) then humnata=$(echo 'printf("%.2f\n",' $size_nata '/1024/1024);'|perl -); else humnata=0; fi echo Всего $humsize мегабайт echo ----------------------------------------- echo '|' Получено " "'|' Пользователь " "'|' echo ----------------------------------------- echo '|' $humpas мегабайт " "'|' pas" "'|' echo ----------------------------------------- echo '|' $humnata мегабайт " "'|' nata" "'|' echo -----------------------------------------

Он конечно не идеален, но пока работает
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Разделение чисел в текстовом файле

Сообщение sash-kan »

pas писал(а):
21.10.2007 21:48
Вобщем после некоторых изысканий пришел в следующему варианту
Вы темой случайно, не ошиблись? (:
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
pas
Сообщения: 597
Статус: маньяк
ОС: Gentoo

Re: Разделение чисел в текстовом файле

Сообщение pas »

Да вроде нет. Правда в результате я получаю число мегабайт, вместо байт с разделенными разрядами, но просто вначале показалось, что разделить разряды бедет достаточно.
Спасибо сказали: