Unix administration - What's wrong with this cut utility command?

This is Interesting: Free IT Magazines  
Home > Archive > Unix administration > March 2007 > What's wrong with this cut utility command?





You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

Author What's wrong with this cut utility command?
KAKA

2007-03-13, 7:17 pm

I am trying read filelist.log and strip out all file attributes and
print only the full path filname to output.log. The command (2 below)
I tried does not generate the appropriate output. (NOTE: I even tried
to issue cut without the -d switch, since tab is the default delimiter
for cut, it still doesn't work) What am I doing wrong here?

Here is what I issued on the command line:

cut -f11 -d ' ' filelist.log > output.log

OR since some paths come with directory / file names with space. I
would use this also:

cut -f 11-20 -d ' ' filelist.log > output.log


Here is my filelist.log:

23151931 43 -rwxrw-r-- 1 www www 43520 Oct 8 2004 /
export/home/qa/Utils/All 3rd Party Version/Docs/thirdparty.doc
33219855 3048 -rwxrw-r-- 1 www www 3109936 Jun 18 2004 /
export/home/qa/Utils/All 3rd Party Version/Popular Versions/VPN
_PPC/movianvpn-3.05-ppc2002.exe

Here is my output.log

23151931 43 -rwxrw-r-- 1 www www 43520 Oct 8 2004 /
export/home/qa/Utils/All 3rd Party Version/Docs/thirdparty.doc
33219855 3048 -rwxrw-r-- 1 www www 3109936 Jun 18 2004 /
export/home/qa/Utils/All 3rd Party Version/Popular Versions/VPN
_PPC/movianvpn-3.05-ppc2002.exe

Barry Margolin

2007-03-14, 1:19 am

In article <1173815791.063040.56750@s48g2000cws.googlegroups.com>,
"KAKA" <kaka.hui@gmail.com> wrote:

> I am trying read filelist.log and strip out all file attributes and
> print only the full path filname to output.log. The command (2 below)
> I tried does not generate the appropriate output. (NOTE: I even tried
> to issue cut without the -d switch, since tab is the default delimiter
> for cut, it still doesn't work) What am I doing wrong here?


Cut does not treat multiple delimiters in a row as a single delimiter.
So it's not useful for files where you can have varying amounts of
whitespace between the columns.

Use awk instead:

awk '{print $11}'

>
> Here is what I issued on the command line:
>
> cut -f11 -d ' ' filelist.log > output.log
>
> OR since some paths come with directory / file names with space. I
> would use this also:
>
> cut -f 11-20 -d ' ' filelist.log > output.log
>
>
> Here is my filelist.log:
>
> 23151931 43 -rwxrw-r-- 1 www www 43520 Oct 8 2004 /
> export/home/qa/Utils/All 3rd Party Version/Docs/thirdparty.doc
> 33219855 3048 -rwxrw-r-- 1 www www 3109936 Jun 18 2004 /
> export/home/qa/Utils/All 3rd Party Version/Popular Versions/VPN
> _PPC/movianvpn-3.05-ppc2002.exe
>
> Here is my output.log
>
> 23151931 43 -rwxrw-r-- 1 www www 43520 Oct 8 2004 /
> export/home/qa/Utils/All 3rd Party Version/Docs/thirdparty.doc
> 33219855 3048 -rwxrw-r-- 1 www www 3109936 Jun 18 2004 /
> export/home/qa/Utils/All 3rd Party Version/Popular Versions/VPN
> _PPC/movianvpn-3.05-ppc2002.exe


--
Barry Margolin, barmar@alum.mit.edu
Arlington, MA
*** PLEASE post questions in newsgroups, not directly to me ***
*** PLEASE don't copy me on replies, I'll read them in the group ***
Michael Paoli

2007-03-18, 1:20 am

Barry Margolin wrote:
> In article <1173815791.063040.56750@s48g2000cws.googlegroups.com>,
> "KAKA" <kaka.hui@gmail.com> wrote:
>
> Cut does not treat multiple delimiters in a row as a single delimiter.
> So it's not useful for files where you can have varying amounts of
> whitespace between the columns.
> Use awk instead:
> awk '{print $11}'


Except that awk command won't work as expected if the filename
contains whitespace.
[vbcol=seagreen]

If all your file pathnames are absolute (start with /), why not:
sed -e 's/^[^\/]*//'
Or if they're not necessarily all absolute, but start two characters
after the end of the time/date data fields, and possibly even start
with whitespace:
perl -pe '
s/
(?:

#first field, possibly with leading whitespace
\s*\S+

#2nd through 10th fields, with leading whitespace
(?:\s+\S+){9}

#a single space:
\
#(there is a single space after that backslash)
)
//ox;
'
Of course if the file pathnames contain newlines, things may get a
bit
more interesting.

Sponsored Links






Free braindumps | Software forum | Database administration forum

Copyright 2003 - 2008 webservertalk.com