2009-11-11 7 views
0
séparé

donc je suis en train d'afficher uniquement les colonnes à la foiscommande bash linux par l'espace

premier ls -l me donne cette

drwxr-xr-x 11 stuff stuff  4096 2009-08-22 06:45 lyx-1.6.4 
-rw-r--r-- 1 stuff stuff 14403778 2009-10-26 02:37 lyx.tar.gz 

J'utilise ceci:

ls -l |cut -d " " -f 1 

pour obtenir ce

drwxr-xr-x 
-rw-r--r-- 

et affi ys ma première colonne très bien. Ensuite, je veux voir sur la deuxième colonne

ls -l |cut -d " " -f 2 

Je ne reçois que ce

11 

ne devrais-je obtenir

11 
1 

?
Pourquoi fait-il cela?

si j'essaie

ls -l |cut -d " " -f 2-3 

Je reçois

11 stuff 

Il doit y avoir un moyen plus facile d'afficher les colonnes à droite?

Répondre

6

devrait afficher la deuxième colonne:

ls -l | awk '{print $2}'

+0

Cela fonctionnera pour tous les cas sauf pour le nom de fichier lui-même lorsque le nom de fichier contient des espaces. Pour cela, vous pouvez utiliser "awk '{print substr ($ 0, 45)}'" ou "ls -l | cut -c45-". –

1

coupe considère deux délimiteurs successifs d'avoir un champ vide entre les deux. Ainsi, la deuxième ligne:

-rw-r--r-- 1 stuff stuff 

a des champs:

1: -rw-r--r-- 
2: --empty field-- 
3: 1 
etc. 

Vous pouvez utiliser les champs de la colonne d'utilisation dans la coupe:

ls -l | cut -c13-14 

Ou vous pouvez utiliser awk pour séparer les champs (unlink, coupe awk traitera les délimiteurs séquentiels comme un seul délimiteur).