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; } } _______________________________________________ freebsd-questions@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"