ALT Linux Community general discussions
 help / color / mirror / Atom feed
* [Comm] срочно нужна помощь bash, awk или perl
@ 2011-12-08 11:38 Olexander Chernetskyy
  2011-12-08 12:01 ` Vladimir Didenko
  2011-12-08 12:18 ` Vladimir Karpinsky
  0 siblings, 2 replies; 8+ messages in thread
From: Olexander Chernetskyy @ 2011-12-08 11:38 UTC (permalink / raw)
  To: Community

Уже на форуме задал этот же вопрос. Но, извините очень срочно нужно.

Есть текстовый файл с уймой строк фиксированой длины.
поля в строке разделены запятыми. Длина полей фиксирована.
пример строки:

021211083610,            ,QWERTYUIASDF,ZXCVBNMDFGGG,000001d9,N,Y,1

В поле #5 содержится 16-ричное значение.
Нужно срочно перелопатить это файл и заменить 16-ричное значение на
10-тичное.

Заранее благодарен за помощь.


-- 
Best regards,
ArCher
Jabber: antonio_gaudi{at}jabber.ru




^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Comm] срочно нужна помощь bash, awk или perl
  2011-12-08 11:38 [Comm] срочно нужна помощь bash, awk или perl Olexander Chernetskyy
@ 2011-12-08 12:01 ` Vladimir Didenko
  2011-12-08 13:05   ` Olexander Chernetskyy
  2011-12-08 12:18 ` Vladimir Karpinsky
  1 sibling, 1 reply; 8+ messages in thread
From: Vladimir Didenko @ 2011-12-08 12:01 UTC (permalink / raw)
  To: sp_archer, ALT Linux Community general discussions

[-- Attachment #1: Type: text/plain, Size: 612 bytes --]

8 декабря 2011 г. 15:38 пользователь Olexander Chernetskyy написал:
> Уже на форуме задал этот же вопрос. Но, извините очень срочно нужно.
>
> Есть текстовый файл с уймой строк фиксированой длины.
> поля в строке разделены запятыми. Длина полей фиксирована.
> пример строки:
>
> 021211083610,            ,QWERTYUIASDF,ZXCVBNMDFGGG,000001d9,N,Y,1
>
> В поле #5 содержится 16-ричное значение.
> Нужно срочно перелопатить это файл и заменить 16-ричное значение на
> 10-тичное.
>
> Заранее благодарен за помощь.
>

Перловский скрипт в аттаче.

Использование

./convert.pl input > output


-- 
С уважением,
Владимир.

[-- Attachment #2: convert.pl --]
[-- Type: text/x-perl, Size: 329 bytes --]

#!/usr/bin/perl

use strict;
use warnings; 

die "Usage: $0 <input file>" unless 1 == scalar @ARGV;

my $inp_fname = shift;

die "Cannot open $inp_fname\n" unless open(INP, $inp_fname);

while (my $line = <INP>)
{
    my @tokens = split(/,/, $line);
    $tokens[4] = hex($tokens[4]);
    print join(',', @tokens);
}

close(INP);

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Comm] срочно нужна помощь bash, awk или perl
  2011-12-08 11:38 [Comm] срочно нужна помощь bash, awk или perl Olexander Chernetskyy
  2011-12-08 12:01 ` Vladimir Didenko
@ 2011-12-08 12:18 ` Vladimir Karpinsky
  1 sibling, 0 replies; 8+ messages in thread
From: Vladimir Karpinsky @ 2011-12-08 12:18 UTC (permalink / raw)
  To: community

08.12.2011 15:38, Olexander Chernetskyy пишет:
> Уже на форуме задал этот же вопрос. Но, извините очень срочно нужно.
>
> Есть текстовый файл с уймой строк фиксированой длины.
> поля в строке разделены запятыми. Длина полей фиксирована.
> пример строки:
>
> 021211083610,            ,QWERTYUIASDF,ZXCVBNMDFGGG,000001d9,N,Y,1
>
> В поле #5 содержится 16-ричное значение.
> Нужно срочно перелопатить это файл и заменить 16-ричное значение на
> 10-тичное.
>

Лопатить, скорее всего, awk. А заменить: $((16#000001d9)), см. тред 
"Арифметика в bash" от 17.11 с.г. там мне это мудрые люди подсказали...

-- 
	С уважением,
		Владимир.


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Comm] срочно нужна помощь bash, awk или perl
  2011-12-08 12:01 ` Vladimir Didenko
@ 2011-12-08 13:05   ` Olexander Chernetskyy
  2011-12-08 13:08     ` Michael Shigorin
  2011-12-08 13:20     ` Vladimir Didenko
  0 siblings, 2 replies; 8+ messages in thread
From: Olexander Chernetskyy @ 2011-12-08 13:05 UTC (permalink / raw)
  To: Community

Спасибо.
Нужна еще консультация.
Поле 8 позиций. Должно быть заполнено лидирующими нулями.
Я попробовал sprintf использовать, но перл сказал на нее "Undefined
subroutine"

Нужно наверное use что-то? Только не смог найти что. Подскажите.

> 8 декабря 2011 г. 15:38 пользователь Olexander Chernetskyy написал:
>> Уже на форуме задал этот же вопрос. Но, извините очень срочно нужно.
>>
>> Есть текстовый файл с уймой строк фиксированой длины.
>> поля в строке разделены запятыми. Длина полей фиксирована.
>> пример строки:
>>
>> 021211083610,            ,QWERTYUIASDF,ZXCVBNMDFGGG,000001d9,N,Y,1
>>
>> В поле #5 содержится 16-ричное значение.
>> Нужно срочно перелопатить это файл и заменить 16-ричное значение на
>> 10-тичное.
>>
>> Заранее благодарен за помощь.
>>
>
> Перловский скрипт в аттаче.
>
> Использование
>
> ./convert.pl input > output
>
>
> --
> С уважением,
> Владимир.
>


-- 
Best regards,
ArCher
Jabber: antonio_gaudi{at}jabber.ru



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Comm] срочно нужна помощь bash, awk или perl
  2011-12-08 13:05   ` Olexander Chernetskyy
@ 2011-12-08 13:08     ` Michael Shigorin
  2011-12-08 13:16       ` Olexander Chernetskyy
  2011-12-08 13:20     ` Vladimir Didenko
  1 sibling, 1 reply; 8+ messages in thread
From: Michael Shigorin @ 2011-12-08 13:08 UTC (permalink / raw)
  To: Community

On Thu, Dec 08, 2011 at 03:05:46PM +0200, Olexander Chernetskyy wrote:
> Поле 8 позиций. Должно быть заполнено лидирующими нулями.
> Я попробовал sprintf использовать, но перл сказал на нее
> "Undefined subroutine"

printf '%08d'?

-- 
 ---- WBR, Michael Shigorin <mike@altlinux.ru>
  ------ Linux.Kiev http://www.linux.kiev.ua/


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Comm] срочно нужна помощь bash, awk или perl
  2011-12-08 13:08     ` Michael Shigorin
@ 2011-12-08 13:16       ` Olexander Chernetskyy
  0 siblings, 0 replies; 8+ messages in thread
From: Olexander Chernetskyy @ 2011-12-08 13:16 UTC (permalink / raw)
  To: community

И на printf тоже "Undefined subroutine" ругается.
Или это у меня перл какой-то неправильный?

> On Thu, Dec 08, 2011 at 03:05:46PM +0200, Olexander Chernetskyy wrote:
>> Поле 8 позиций. Должно быть заполнено лидирующими нулями.
>> Я попробовал sprintf использовать, но перл сказал на нее
>> "Undefined subroutine"
>
> printf '%08d'?
>
> --
>  ---- WBR, Michael Shigorin
>  ------ Linux.Kiev http://www.linux.kiev.ua/
> _______________________________________________
> community mailing list
> community@lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/community


-- 
Best regards,
ArCher
Jabber: antonio_gaudi{at}jabber.ru



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Comm] срочно нужна помощь bash, awk или perl
  2011-12-08 13:05   ` Olexander Chernetskyy
  2011-12-08 13:08     ` Michael Shigorin
@ 2011-12-08 13:20     ` Vladimir Didenko
  2011-12-08 13:34       ` Olexander Chernetskyy
  1 sibling, 1 reply; 8+ messages in thread
From: Vladimir Didenko @ 2011-12-08 13:20 UTC (permalink / raw)
  To: sp_archer, ALT Linux Community general discussions

8 декабря 2011 г. 17:05 пользователь Olexander Chernetskyy  написал:
> Спасибо.
> Нужна еще консультация.
> Поле 8 позиций. Должно быть заполнено лидирующими нулями.
> Я попробовал sprintf использовать, но перл сказал на нее "Undefined
> subroutine"

Не может быть. Проверил, даже на древнем 5.8.6 есть. То есть нужно
заменить строчку

$tokens[4] = hex($tokens[4]);

на

    $tokens[4] = sprintf("%08d", hex($tokens[4]));

>
> Нужно наверное use что-то? Только не смог найти что. Подскажите.
>

-- 
С уважением,
Владимир.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Comm] срочно нужна помощь bash, awk или perl
  2011-12-08 13:20     ` Vladimir Didenko
@ 2011-12-08 13:34       ` Olexander Chernetskyy
  0 siblings, 0 replies; 8+ messages in thread
From: Olexander Chernetskyy @ 2011-12-08 13:34 UTC (permalink / raw)
  To: Community

O! Теперь заработало.
Вроде-бы также делал...
Наверное какую-то  запятую где-то пропустил.
Я перл только начал учить.

Но данная задача была реальная и срочная.
Еще раз огромное спасибо всем!

> 8 декабря 2011 г. 17:05 пользователь Olexander Chernetskyy написал:
>> Спасибо.
>> Нужна еще консультация.
>> Поле 8 позиций. Должно быть заполнено лидирующими нулями.
>> Я попробовал sprintf использовать, но перл сказал на нее "Undefined
>> subroutine"
>
> Не может быть. Проверил, даже на древнем 5.8.6 есть. То есть нужно
> заменить строчку
>
> $tokens[4] = hex($tokens[4]);
>
> на
>
>  $tokens[4] = sprintf("%08d", hex($tokens[4]));
>
>>
>> Нужно наверное use что-то? Только не смог найти что. Подскажите.
>>
>
> --
> С уважением,
> Владимир.
>


-- 
Best regards,
ArCher
Jabber: antonio_gaudi{at}jabber.ru



^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2011-12-08 13:34 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-12-08 11:38 [Comm] срочно нужна помощь bash, awk или perl Olexander Chernetskyy
2011-12-08 12:01 ` Vladimir Didenko
2011-12-08 13:05   ` Olexander Chernetskyy
2011-12-08 13:08     ` Michael Shigorin
2011-12-08 13:16       ` Olexander Chernetskyy
2011-12-08 13:20     ` Vladimir Didenko
2011-12-08 13:34       ` Olexander Chernetskyy
2011-12-08 12:18 ` Vladimir Karpinsky

ALT Linux Community general discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
		mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
	public-inbox-index community

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.community


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git