[Unix] 4 derniers caractères d'un fichier

loic -  
 deny -
Bonjour,

J'ai un fichier sous unix et j'aimerai récupérer les 4 derniers caractères, comment faire ?

ex : toto_titi (je veux titi)
A voir également:

7 réponses

jisisv Messages postés 3678 Statut Modérateur 935
 
Hello,
OK , je cherche ici les 4 derniers caractères du fichier.
Ceci doidevrait te convenir

[johand@zoot] ~ $filename=un_fichier
[johand@zoot] ~ $echo $filename|rev| cut -b 1-4|rev
[johand@zoot] ~ $echo $filename|rev| cut -b 1-4|rev
hier

Johan
The software said "Requires Windows98, Win2000, or better,
So I installed Unix.
3
deny
 
soit le nom de fichier /rep1/rep2/rep3/abcdefghFA.sh

basename "/rep1/rep2/rep3/abcdefghFA.sh" ".sh"|rev|cut -c 1,4|rev

detail: basename ne garde que le nom du fichier (enlève les repertoires contrairement à dirname) et ici on lui demande aussi d'enlever l'extension ".sh", puis on retourne la chaine (rev), on coupe les premiers caracteres souhaités, puis on retourne la chaine dans le bon sens.
2
foobar47
 
Salut
Tu fais le total de caractères que contient ton fichier, puis tu les range dans un tableau, puis tu prend les 4 dernières cases de ton tableau .
;))
Voili voilou ! :))
1
M&M Messages postés 5058 Statut Contributeur 667
 
Tu devrais facilement y arriver en combinant adroitemement deux ou trois commandes unix tail, sed, grep ou awk . Par exemple :
tail -1 file | awk '{print /....$/}'
(mais je n'ai pas la possibilité de le tester ici) et le tour est joué !
 :,§_ ç _
(@)=(@)
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jisisv Messages postés 3678 Statut Modérateur 935
 
Hello, tu peux t'amuser avec quelques pipes

tail -1 myfile |rev |cut -b 1-4|rev

Johan
The software said "Requires Windows98, Win2000, or better,
So I installed Unix.
1
loic
 
Merci pour ta réponse mais avec cette commande tu récupère les 4 derniers caractères de la ligne dans le fichier hors moi je veux les 4 derniers caractères du nom du fichier.
0
M&M Messages postés 5058 Statut Contributeur 667
 
Ah loic, je vois pourquoi on m'a bloqué ma réponse sur le forum programmation: c'ets que tuavais demandé deux fois presque le même chose de deux côtés. j'ai perdu le long texte que je t'avais pondu dans l'affaire, du temps précieux perdu, je vais essayer de t'aider avec ceci:

tu tapes un truc du genre
ls | awk {print substr($0,length($0)-3)}


Je proposais aux lecteurs un petit exercice de programmation sous DOS:
Comment extraire l'extension des noms de fichiers dans un répertoire ?
Je propose d'aller chercher deux outils unix compilés pour les PCs en DOS : gsed205b.zip sur http://www.simtel.net/pub/pd/37207.html et awk320.zip sur
http://www.simtel.net/pub/pd/51371.html

Je propose ces deux lignes
dir /b | sed s/[^\.]*\.//g

Mais il donne le nom complet s'il n'y a pas de point dans le nom, alors
dir /b | awk "{match($0,/\./); if (RSTART>0) {print substr($0,RSTART+1)}"

Quelqu'un a plus court ?
 :,§_ ç _
(@)=(@)
1
batmat Messages postés 1871 Statut Membre 114
 
Oui tintttttttttttin

Regardez la doc de tail ;-) cette commande a un mode caractère ;-)

$tail -cN nomfichier

avec N le nombre de caractère que tu veux.

@++

Vous hésitez entre Linux et Windows?
Vous voulez dépenser du temps ou de l'argent ?
1
jisisv Messages postés 3678 Statut Modérateur 935
 
Bien vu ;)

Johan
The software said "Requires Windows98, Win2000, or better,
So I installed Unix.
0