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:
-
cutcon-de-fcut -d ' ' -f 1,2,3,4,9da
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 specifiedSpecificamente per
lsè probabile che non riesca poichélscambierà la quantità di spazio bianco tra i campi consecutivi per allinearli meglio.cuttrattafoo<space>barefoo<space><space>bardiversamente. -
awke 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]"'