Mi piace usare il cut
comando in Linux con il -c
bandiera. Tuttavia, sono interessato a trovare un comando che faccia il set inverso di cut
. In sostanza, dato l'input:
drwxrwxrwx 2 root root 4096 4096 4 20:15 bin
drwxrwxrwx 2 root root 4096 4096 4 20:15 Desktop
Vorrei vedere tutto tranne “4096 4 20:15”. Ecco l'output:
drwxrwxrwx 2 root root bin
drwxrwxrwx 2 root root Desktop
Voglio essere in grado di ritagliare letteralmente tra i caratteri xey, se ha senso.
Qualche idea? Non riesco a immaginare che sarebbe uno script difficile da scrivere, ma se esiste già un comando per esso, mi piacerebbe usarlo.
Risposta accettata:
Come altri hanno sottolineato, non dovresti analizzare l'output di ls
. Supponendo che tu stia usando ls
solo come esempio e analizzerà qualcos'altro, ci sono alcuni modi per fare ciò che vuoi:
-
cut
con-d
e-f
cut -d ' ' -f 1,2,3,4,9
da
man cut
:-d, --delimiter=DELIM use DELIM instead of TAB for field delimiter -f, --fields=LIST select only these fields; also print any line that contains no delimiter character, unless the -s option is specified
Specificamente per
ls
è probabile che non riesca poichéls
cambierà la quantità di spazio bianco tra i campi consecutivi per allinearli meglio.cut
trattafoo<space>bar
efoo<space><space>bar
diversamente. -
awk
e le sue varianti dividono ogni riga di input in campi su uno spazio bianco in modo da potergli dire di stampare solo i campi che desideri:awk '{print $1,$2,$3,$4,$9}'
-
Perl
perl -lane 'print "@F[0 .. 3,8]"'