Cut -d <tabulation>

Bonjour,
depuis toujours, je butte désespérément sur le caractère à mettre pour définir la tabulation comme délimiteur de cut, généralement pour isoler deux champs de l’affichage de « ls -l ».

merci pour votre compréhension!

1 J'aime

salut,

pas de -d, car la tabulation est le délimiteur par défaut

-d, --delimiter=DÉLIM
              utiliser le DÉLIMiteur au lieu d'une tabulation comme délimiteur de champs
2 J'aime

Vous êtes à l’écoute de RTFM…

1 J'aime

:rofl: :joy: :sweat_smile: :crazy_face: :stuck_out_tongue_winking_eye:

Merci Zargos,
je suppose donc que la présentation de « ls -l » ne fait pas appel aux tabulations, comme je le croyais, ce qui complique à mes petits yeux la sélection des champs à extraire.
Ou, y a-t’il quelque part un fichier qui modifierait ce délimiteur par défaut?

en fait quelle est ton besoin réel? Quels sont les champs que tu veux récupérer?

Il s’agit d’extraire le champs de l’espace disponible d’une ligne sélectionnée de « df ».
Désolé pour l’erreur (df et non ls).

Dans un script bash, pour lancer rsync, détecter l’accès au disque USB de sauvegarde et vérifier l’espace disponible.

df | grep <xxx> | cut -f4

affiche la ligne complète (quel que soit le champs donné à -f)

Il existe l’option --output=<liste de champs> de df,

donc problème concret, immédiat résolu,
mais le problème avec cut persiste, et me bloque souvent (avec ls -l en général, mais parfois aussi d’autres sorties de commandes.)

df --output=avail /dev/sda2 | grep -v 'Dispo'

Tu peu ajouter l’option -BK, -BM, -BG pour la taille des blocs dans la réponse. le grep juste pour n’avoir que ls info voulues sans les lignes de balbla avec.

exemple:

$ df -BK --output=source,avail,target /dev/sda1 | grep -v Dispo
/dev/sda1        287740K /boot/efi
$ df -BM --output=source,avail,target /dev/sda1 | grep -v Dispo
/dev/sda1         281M /boot/efi

Le même avec la selection des champs:

$ df -BM --output=source,avail,target /dev/sda1 | grep -v Dispo | awk '{ print $2 }'
281M
$ df -BM --output=source,avail,target /dev/sda1 | grep -v Dispo | awk '{ print $3 }'
/boot/efi
$ df -BM --output=source,avail,target /dev/sda1 | grep -v Dispo | awk '{ print $1 }'
/dev/sda1

Manuel est ton ami :stuck_out_tongue_winking_eye:

Bonjour

Juste en passant,
avec un grep et un pipe en moins :

df -BM --output=source,avail,target /dev/sda1 | awk '$4 !~ /Dispo/ {print $2}'

EDIT :
Une autre approche, ne lire que la dernière ligne :

df -BM --output=source,avail,target /dev/sda1 | awk 'END {print $2}'
3 J'aime

Erf. les mauvaises habitudes avec le grep :wink:

1 J'aime