Me gusta usar el cut
comando en Linux con -c
bandera. Sin embargo, estoy interesado en encontrar un comando que haga el conjunto inverso de cut
. Esencialmente, dada la entrada:
drwxrwxrwx 2 root root 4096 4096 4 20:15 bin
drwxrwxrwx 2 root root 4096 4096 4 20:15 Desktop
Me gustaría ver todo excepto “4096 4 20:15”. Aquí está la salida:
drwxrwxrwx 2 root root bin
drwxrwxrwx 2 root root Desktop
Quiero poder cortar literalmente entre los caracteres x e y, si eso tiene sentido.
¿Algunas ideas? No puedo imaginar que sea un script difícil de escribir, pero si ya existe un comando para él, me encantaría usarlo.
Respuesta aceptada:
Como han señalado otros, no debe analizar la salida de ls
. Suponiendo que está utilizando ls
solo como ejemplo y analizaremos otra cosa, hay algunas formas de hacer lo que quieres:
-
cut
con-d
y-f
cut -d ' ' -f 1,2,3,4,9
de
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
Específicamente para
ls
es probable que esto falle ya quels
cambiará la cantidad de espacios en blanco entre campos consecutivos para que se alineen mejor.cut
tratafoo<space>bar
yfoo<space><space>bar
diferente. -
awk
y sus variantes dividen cada línea de entrada en campos en espacios en blanco para que pueda indicarle que imprima solo los campos que desee:awk '{print $1,$2,$3,$4,$9}'
-
Perl
perl -lane 'print "@F[0 .. 3,8]"'