Hi Giorgos
Thank you
But my output is from your suggstion
printf Created: %s\n, system(date +%Y%m%d);
20071122
Created: 0
20071122
Updated: 0
how can I have output as
Created: 20071122
Updated: 20071122
In additon,
ls it possible to have loop output also?
I need to have
print File No:, CMA001
the second record is CMA002 and then CMA003 for the
3rd record
awk -f program.awk record.txt
Thank you again
--- Giorgos Keramidas [EMAIL PROTECTED]
wrote:
On 2007-11-21 12:26, ann kok [EMAIL PROTECTED]
wrote:
Hi all
how command date, hostname run in awk program?
awk -F program.awk file.txt
You don't use backticks... These are a feature of
the shell, and
running a script through progname.awk is no longer a
shell session.
Try system(date) in your awk(1) script:
program.awk
BEGIN { RS = \n ; FS = | }
{
print Name:, $9
print Created: `date`
print from: `hostname`
print
}
BEGIN {
RS =\n;
FS = |;
}
{
printf Name:%s\n, $9;
printf Created: %s\n,
system(date);
printf From:%s\n,
system(hostname);
}
Running system(hostname) once for each file may be
horribly
inefficient, though. If I were you, I'd write this
as a *shell* script,
which runs hostname once, stashes the result away
in a variable, and
reuses it all the time.
Running date may be a bit less efficient than
something like
gettimeofday(). Perl has a gettimeofday() function
in the Time::HiRes
module, so it may be worth investigating if that may
speed things up a
bit more.
A completely untested first try to do something like
this is ...
#!/usr/bin/perl -w
use strict;
use POSIX qw(strftime);
use Time::HiRes qw(gettimeofday);
my $hostname = `hostname`;
my $line;
while (defined($line = STDIN)) {
chomp $line;
my @fields = split /|/, $line;
if ($#fields = 0) {
my ($seconds, $microseconds)
= gettimeofday();
printf Name:%s\n,
$fields[8];
printf Created: %s\n,
strftime(%Y-%m-%d
%H:%M:%S, gmtime($seconds));
printf From:%s\n,
$hostname;
}
}
--- Giorgos Keramidas [EMAIL PROTECTED]
wrote:
On 2007-11-21 12:26, ann kok [EMAIL PROTECTED]
wrote:
Hi all
how command date, hostname run in awk program?
awk -F program.awk file.txt
You don't use backticks... These are a feature of
the shell, and
running a script through progname.awk is no longer a
shell session.
Try system(date) in your awk(1) script:
program.awk
BEGIN { RS = \n ; FS = | }
{
print Name:, $9
print Created: `date`
print from: `hostname`
print
}
BEGIN {
RS =\n;
FS = |;
}
{
printf Name:%s\n, $9;
printf Created: %s\n,
system(date);
printf From:%s\n,
system(hostname);
}
Running system(hostname) once for each file may be
horribly
inefficient, though. If I were you, I'd write this
as a *shell* script,
which runs hostname once, stashes the result away
in a variable, and
reuses it all the time.
Running date may be a bit less efficient than
something like
gettimeofday(). Perl has a gettimeofday() function
in the Time::HiRes
module, so it may be worth investigating if that may
speed things up a
bit more.
A completely untested first try to do something like
this is ...
#!/usr/bin/perl -w
use strict;
use POSIX qw(strftime);
use Time::HiRes qw(gettimeofday);
my $hostname = `hostname`;
my $line;
while (defined($line = STDIN)) {
chomp $line;
my @fields = split /|/, $line;
if ($#fields = 0) {
my ($seconds, $microseconds)
= gettimeofday();
printf Name:%s\n,
$fields[8];
printf Created: %s\n,
strftime(%Y-%m-%d
%H:%M:%S, gmtime($seconds));
printf From:%s\n,
$hostname;
}
}
Be a better pen pal.
Text or chat with friends inside Yahoo! Mail. See how.
http://overview.mail.yahoo.com/
___
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to [EMAIL PROTECTED]