J'aime utiliser la cut
commande sous Linux avec le -c
drapeau. Cependant, je suis intéressé à trouver une commande qui fait en quelque sorte l'inverse de cut
. Essentiellement, compte tenu de l'entrée :
drwxrwxrwx 2 root root 4096 4096 4 20:15 bin
drwxrwxrwx 2 root root 4096 4096 4 20:15 Desktop
Je voudrais tout voir sauf "4096 4 20:15". Voici le résultat :
drwxrwxrwx 2 root root bin
drwxrwxrwx 2 root root Desktop
Je veux pouvoir couper littéralement entre les caractères x et y, si cela a du sens.
Des idées? Je ne peux pas imaginer que ce serait un script difficile à écrire, mais s'il existe déjà une commande pour cela, j'aimerais l'utiliser.
Réponse acceptée :
Comme d'autres l'ont souligné, vous ne devez pas analyser la sortie de ls
. En supposant que vous utilisez ls
uniquement à titre d'exemple et analysera autre chose, il existe plusieurs façons de faire ce que vous voulez :
-
cut
avec-d
et-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
Spécifiquement pour
ls
cela risque d'échouer depuisls
modifiera la quantité d'espaces blancs entre les champs consécutifs pour mieux les aligner.cut
traitefoo<space>bar
etfoo<space><space>bar
différemment. -
awk
et ses variantes divisent chaque ligne d'entrée en champs sur un espace blanc afin que vous puissiez lui dire de n'imprimer que les champs que vous voulez :awk '{print $1,$2,$3,$4,$9}'
-
Perle
perl -lane 'print "@F[0 .. 3,8]"'