Can't find string terminator "`" anywhere before EOF

// AIX 6.1

What I am trying to accomplish is to display the user name and the last login date and time in one line:

for usrlist in $(cat  alluser.txt)
do
$usrlist 
perl -e 'print scalar localtime `lsuser -a time_last_login $usrlist | awk -F '=' '{print $2}'`' 
done

However, it seems this line (tested with jdoe user account)

perl -e 'print scalar localtime `lsuser -a time_last_login jdoe | awk -F '=' '{print $2}'`'

returns an error saying

Can't find string terminator "`" anywhere before EOF

.

Can you please let me know how to resolve this error and display the user name and the converted time_last_login next each on one row?

Appreciate it!

Hi,
Your problem is with mutiple quote ('),so:

perl -e "print scalar localtime \`lsuser -a time_last_login jdoe | awk -F '=' '{print $2}'\`"

should work...

Regards.

Thank you!! Is it possible that we can display the username and time on one row so that I can have a better output?

right now, I am getting like:

Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31 19:00:00 1969Wed Dec 31

Perl does not require the help of awk, what's the output of lsuser -a time_last_login jdoe ?

It shows:

jdoe time_last_login=1412251621

What I want is as the output is:

jdoe  Wed Dec 31 19:00:00 
.....

or even better

jdoe   12/31/2013 19:00:00
....

Please advise.

As "Aia" noted you can do all your processing in perl instead of mixing shell / perl / awk into a single code snippet...

I would do it in two statements

last=`lsuser -a time_last_login jdoe | awk -F '=' '{print $2}'`
perl -le "print scalar localtime $last"

We can use an awkish approach:

lsuser -a time_last_login jdoe | perl -lnaF'[\s=]' -e 'print "$F[0] ", scalar localtime($F[2])'
jdoe Thu Oct  2 06:07:01 2014

We can use another approach:

lsuser -a time_last_login jdoe | perl -ln -e '/^(\w+)\s\w+=(\d+)/ and print "$1 ", scalar localtime($2);'
jdoe Thu Oct  2 06:07:01 2014

To have your ultimate output format, we need to do some more work with the return from localtime:

lsuser -a time_last_login jdoe | perl -ln -e '/^(\w+)\s\w+=(\d+)/ and
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($2) and printf("%s %02d/%02d/%d %02d:%02d:%02d\n", $1, $mon, $mday, $year+1900, $hour, $min, $sec);'
jdoe 09/02/2014 06:07:01

perldoc is a resource to help coding in perl
localtime - perldoc.perl.org

localtime takes a number of epoch seconds - what you have - and returns what in C is called a struct tm - broken down time/dates.

Read the whole page - there is not much to it. It also shows a strftime example.

strftime turns those broken down time/dates into any format of output you want. It uses the exact same time formatting as does your UNIX date command.