I like using the cut
command in Linux with the -c
flag. However, I'm interested in finding a command that sort of does the set inverse of cut
. Essentially, given the input:
drwxrwxrwx 2 root root 4096 4096 4 20:15 bin
drwxrwxrwx 2 root root 4096 4096 4 20:15 Desktop
I would like to see everything except “4096 4 20:15”. Here is the output:
drwxrwxrwx 2 root root bin
drwxrwxrwx 2 root root Desktop
I want to be able to literally cut out between characters x and y, if that makes sense.
Any ideas? I can't imagine it'd be a hard script to write but if there already exists a command for it, I'd love to use it.
Best Answer
As others have pointed out, you should not parse the output of
ls
. Assuming you are usingls
only as an example and will be parsing something else, there are a few ways of doing what you want:cut
with-d
and-f
from
man cut
:Specifically for
ls
this is likely to fail sincels
will change the amount of whitespace between consecutive fields to make them align better.cut
treatsfoo<space>bar
andfoo<space><space>bar
differently.awk
and its variants split each input line into fields on white space so you can tell it to print only the fields you want:Perl