--- Taylor Lewick <[EMAIL PROTECTED]> wrote:
> Hi, I have the following one liner which works great in a shell script.  I have a 
>comma
> delimited text file with the same number of rows.  
> I want to add the date in YYYY-MM-DD format to every line...
> 
> I was doing this..  
> cat $file | awk '{print $0 "," "'$fdate'"}' >>$new_file
> 
> Works great
> 
> Unfortunately when I add that to perl in backticks for the system to execute,
> It blows up on the quotes between $0 (the whole line), the comma, and the date 
>variable.
> 
> In perl, I know I could do...
> $fdate=`date 
> open (FILE, ">/newfile");
> @file=`cat $oldfile`
> foreach $item(@file) {
> chomp $item;
> print FILE "$item,$fdate\n";
> }
> close (FILE);
> 
> However, it seems like such a waste to turn an elegant one line into 8 lines of code
> 
> So how can I make that one liner work, I've tried backslashing the quotes, using 
>single quotes,
> and everytime awk blows up at me?
> Thanks much,
> Taylor

Taylor,

If you're trying to do this in a one-liner, pure Perl (assuming that I understood your 
question
correctly), the the following should do the trick:

$ perl -p -e 
'@t=localtime;$t[4]++;$t[5]+=1900;s/$/sprintf(",%4d-%02d-%02d",@t[5,4,3])/e'
oldFile.txt >> newFile.txt

Yeah, it's big and ugly and assumes that you are appending ",YYYY-MM-DD".  Somehow, 
though, I
suspect that I may have misunderstood your intent...

Cheers,
Curtis "Ovid" Poe

=====
"Ovid" on http://www.perlmonks.org/
Someone asked me how to count to 10 in Perl:
push@A,$_ for reverse q.e...q.n.;for(@A){$_=unpack(q|c|,$_);@a=split//;
shift@a;shift@a if $a[$[]eq$[;$_=join q||,@a};print $_,$/for reverse @A

__________________________________________________
Do You Yahoo!?
LAUNCH - Your Yahoo! Music Experience
http://launch.yahoo.com

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to