User ratings
5 star:
 
(2)
4 star:
 
(1)
3 star:
 
(1)
2 star:
 
(1)
1 star:
 
(0)
5 ratings
Average user rating:
3.8 stars
(3.8)
Comment from: Justin Davis [Visitor]
2 stars
Justin Davis

I love perl but I still love awk. For simple tasks awk is easier to use. Like your second example:

ls -l | awk '{ print $1, $3, $4 }'

Awk is worth knowing as well. My advice is don't dismiss awk like others dismiss perl.

09/29/11 @ 14:24
Comment from: robin [Member]

Thanks for the feedback!

I agree that each tool has its strengths, and I think awk and perl are useful for a lot of things. I'm guessing awk probably has a smaller memory footprint as well.

But I must admit that this use of awk as shown above is probably the only one I use on a regular basis. Perl, as the swiss army chainsaw it is, I use for most other text parsing/processing I need.

09/30/11 @ 14:45
Comment from: JRFerguson [Visitor]
5 stars
JRFerguson

Using:

ls -l | perl -lane 'print @F[0,2..3]

...should probably include some inter-field delimiter on output, e.g. :

ls -l | perl -lane 'print join q( ), @F[0,2..3]

10/03/11 @ 16:08
Comment from: robin [Member]

perldoc perlvar shows that $LIST_SEPARATOR ($") is used to separate values in an array variable inside double-quoted strings. It's default value is a single space. This means you can use this construct to ensure you get a space:


ls -l | perl -lane 'print "@F[0,2..3]"'
10/03/11 @ 19:10
Comment from: lou fridkis [Visitor]
4 stars
lou fridkis

my favorite:

ls -l | perl -lane '$sum+=$F[4];print "sum=$sum" if(eof)'

# print the total storage of the directory

10/11/11 @ 23:09
Comment from: andrez [Visitor]  
5 stars
andrez

it is excelent!i still love awk
as i compare perl lane can beat both "sed and awk" by the way can i know if you dont mind
how to translate this awk to perl one liner# iam newbe on perl#:

#!/bin/sh
for i in `cat $TMP/out#$d#$$ |awk '{print $4}' `
do
myloc=`grep $SITEX $TMPLOC/SITE_LOC | awk -F "|" '{print $2}' | sort -u `
cat filena#e#txt | grep $i | awk -v B=$myloc ' {printf#"%-8s %-20s %-25s %-10s %s %s %-30s\n",$1,$2,$3,$4,$5,$6,""B""#}' >> outfile.txt
done
hope you can help me
Kind Regards
Andrez

07/04/12 @ 11:17
Comment from: Craig [Visitor]
3 stars
Craig

Why not just use: "cut -f1 -d' '"?

07/06/12 @ 04:47
Comment from: Craig [Visitor]
Craig

Perl isn't a replacement for AWK, as I've heard all too often. The real value of AWK is that it acts as a filter by default. If you don't know much AWK and you do know Perl, it's fine to use what you know. But it's wrong to say Perl can replace the simplicity of AWK for writing the kind of small filters it's good at.

07/06/12 @ 04:52
Comment from: Craig [Visitor]
Craig

Not to mention AWK is a POSIX/SuS/LSB standard utility and hence much more portable. If 2 languages can handle the task similarly and one is more portable than the other, portability always wins for me.

07/06/12 @ 04:56
Comment from: robin [Member]

@Craig: Mostly because I don't know cut as intimately as I know perl. I actually had to look at the man page to be sure I understood it correctly.

@Andrez: Pulling that apart when it obviously relies on several unknown external variables is not easy. Maybe you should try to explain what it does in plain English instead of me trying to understand shell "golf".

07/08/12 @ 10:34
« Unicode::Collate is really, really slowSlow text consoles in Ubuntu 10.04-based VM in VirtualBox? »