Date: Thu, 22 Nov 2007 10:10:10 -0800 (PST) From: ann kok <annkok2001@yahoo.com> To: Giorgos Keramidas <keramida@ceid.upatras.gr> Cc: freebsd-questions@freebsd.org Subject: Re: can you help about this script Message-ID: <985211.7690.qm@web53304.mail.re2.yahoo.com> In-Reply-To: <20071122173942.GA3814@kobe.laptop>
next in thread | previous in thread | raw e-mail | index | archive | help
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 <keramida@ceid.upatras.gr> wrote: > On 2007-11-21 12:26, ann kok <annkok2001@yahoo.com> > 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 <keramida@ceid.upatras.gr> wrote: > On 2007-11-21 12:26, ann kok <annkok2001@yahoo.com> > 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/
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?985211.7690.qm>