Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 27/09/2019, à 10:49

ShinouQ

[Résolu]La commande "cut" ne me renvoie pas la bonne colonne!

Bonjour à tous, j'ai un problème avec la commande cut, en effet admettons que j'ai un dossier courant tel que:

ls -l

donne

-rw-rw-r-- 1 haffner haffner  0 sept. 26 16:24 code2.c
-rw-rw-r-- 1 haffner haffner  0 sept. 26 16:24 code.c
-rwx------ 1 haffner haffner 95 sept. 27 11:36 find_sh.sh
-rwx------ 1 haffner haffner 54 sept. 26 16:25 find_sh.sh~
-rw-rw-r-- 1 haffner haffner  0 sept. 26 16:24 script.sh
-rw-rw-r-- 1 haffner haffner  0 sept. 26 16:23 test.sh
-rw-rw-r-- 1 haffner haffner  0 sept. 26 16:24 texte.txt

Et que je fasse

ls -l | grep ".sh$" | cut -d " " -f 9

pour obtenir le nom des fichiers .sh de mon dossier. Et bien je n'obtiens la bonne réponse que pour un fichier sur 3! Voilà ce que la commande renvoie chez moi:

find_sh.sh
16:24
16:23

Si une âme charitable pouvait bien m'éclairer sur ce problème je lui serait reconnaissant :-)

Dernière modification par ShinouQ (Le 27/09/2019, à 11:29)

Hors ligne

#2 Le 27/09/2019, à 11:00

credenhill

Re : [Résolu]La commande "cut" ne me renvoie pas la bonne colonne!

hello
il y a 2 espaces entre haffner et 0, un seul entre haffner et 95

Hors ligne

#3 Le 27/09/2019, à 11:01

pingouinux

Re : [Résolu]La commande "cut" ne me renvoie pas la bonne colonne!

Bonjour,
C'est parce que certaines lignes contiennent plusieurs espaces consécutifs, qu'il faut regrouper.
Tu peux faire

..... | sed 's/ \+/ /g' | cut -d " " -f 9

Le mieux serait de faire

ls -1 *.sh

Hors ligne

#4 Le 27/09/2019, à 11:06

nany

Re : [Résolu]La commande "cut" ne me renvoie pas la bonne colonne!

Bonjour,

On peut aussi utiliser tr :

ls -l | grep ".sh$" | tr -s ' ' | cut -d " " -f 9

Sinon avec awk au lieu de cut :

ls -l | grep ".sh$" | awk '{print $9}'

Enfin, la question que je me pose, c’est pourquoi n’utilises-tu pas tout simplement la commande find ?

En ligne

#5 Le 27/09/2019, à 11:17

Postmortem

Re : [Résolu]La commande "cut" ne me renvoie pas la bonne colonne!

Salut,
Pour afficher les noms de fichiers, y'a pas besoin de commande externe.

echo *.sh # Les uns à la suite des autres
printf '%s\n' *.sh # Sur une colonne

Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#6 Le 27/09/2019, à 11:27

ShinouQ

Re : [Résolu]La commande "cut" ne me renvoie pas la bonne colonne!

Ah d'accord j'avais pas vu qu'il y avait 2 espaces... tongue
Du coup merci, je vais m'arranger pour les réduire à un espace à l'aide de vos réponses.
Et sinon oui je savais qu'il y a d'autres solutions plus "simples" pour mon problème mais j'avais juste envie de m'entraîner avec grep et cut big_smile

Hors ligne

#7 Le 27/09/2019, à 19:22

kamaris

Re : [Résolu]La commande "cut" ne me renvoie pas la bonne colonne!

Accessoirement, ton grep ne filtre pas comme tu le penses : il faut protéger le point dans « .sh$ », car là il signifie « n'importe quel caractère ». Ce caractère peut donc en particulier être un point, mais pas seulement (exemple : essaie de mettre un fichier nommé f.ssh dans ton répertoire).
La bonne commande est donc :

grep '\.sh$'

Hors ligne

#8 Le 28/09/2019, à 13:51

ShinouQ

Re : [Résolu]La commande "cut" ne me renvoie pas la bonne colonne!

Oui j'y avais pas pensé non plus. Il faut que je me mette à jour sur les regexp, merci :-)

Hors ligne