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 :
-
cutavec-det-fcut -d ' ' -f 1,2,3,4,9de
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 specifiedSpécifiquement pour
lscela risque d'échouer depuislsmodifiera la quantité d'espaces blancs entre les champs consécutifs pour mieux les aligner.cuttraitefoo<space>baretfoo<space><space>bardifféremment. -
awket 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]"'