Bonjour,
J'ai besoin de supprimer les 7 dernières lignes d'un fichier. J'ai essayer de le faire avec un sed et un head mais ça ne me donne pas le résultat que je veux obtenir.
Quelqu'un a-t-il une solution?
Merci d'avance
Bonjour,
J'ai besoin de supprimer les 7 dernières lignes d'un fichier. J'ai essayer de le faire avec un sed et un head mais ça ne me donne pas le résultat que je veux obtenir.
Quelqu'un a-t-il une solution?
Merci d'avance
Salut,
Code : Sélectionner tout - Visualiser dans une fenêtre à part tail -7 <fichier>
La commande de Winnt fait l'inverse, elle garde les 7 dernières lignes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part head -n -7 fichier
-n avec un paramètre négatif ?
pas certain que cela fonctionne :
combinez un wc -l sur le fichier = nlines,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 head: illegal line count -- -7
soustrayez le nombre de lignes à enlever = X avec expr
et passez le résultat à split -l …
les nlines-X premières lignes seront dans le premier fichier généré par split…
ajouter -i à sed pour éxécuter la comande in-situ
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 fichier="test/supprDerLign.txt" printf '%d\n' "ligne "{1..10} | tee "$fichier" ligne 1 ligne 2 ligne 3 ligne 4 ligne 5 ligne 6 ligne 7 ligne 8 ligne 9 ligne 10 sed ' '"$(($(wc -l <"$fichier")-6))"',$d ' "$fichier" ligne 1 ligne 2 ligne 3
...
?
la commande sed me retourne une erreur:
sed : commande incohérente : 32,$d
J'ai commis une petite erreur dans la commande printf : il faut utiliser %s au lieu de %d (il ne s'agit plus seulement de nombres) !
Pour la commande sed, il faudrait nous montrer exactement ce que tu as entré...
en ce qui me concerne, sur un fichier de 38 lignes, ça fonctionne aussi !
bash -x mon_script.sh affiche notamment :
puis les lignes 1 à 31, sans erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part sed ' 32,$d ' test/supprDerLign.txt
...
?
Pour info, j'utilise : GNU sed version 4.1.5
Bonjour
Voilà une méthode "bricolée"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 #n sera le nombre total de lignes n=`grep -c ^ fichier` head -n `expr $n - 7` fichier
Arcana,
Ta méthode est peut-être bricolée mais n tout cas c'est la seule qui marche chez moi.
Merci beaucoup
Parfait, je cherchais un petit exo pour revoir mes cours o/
(D'abord savoir combien de ligne fait le fichier)
$ cat fichier|wc -l
>nombre
(Retenir la réponse et lui retrancher 7)
(Puis remplacer le fichier par lui-même, sans les dernières lignes)
$ head -nombre fichier>fichier
Exemple avec le fichier "liste.g" de 20 lignes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $ cat liste.g|wc -l >20 $ head -13 liste.g>liste.g
Bricolage un peu random, mais fonctionnel.
et... liste.g a été écrasé.
parce que la redirection est effectuée avant la commande.
cat est inutile :enfin, pour te faire bosser un peu plus :
Code : Sélectionner tout - Visualiser dans une fenêtre à part wc -l < fichier
comment automatises-tu la récupération du nombre, et la soustraction ?
Le fichier est écrasé mais c'est pas problématique, puisque le but était juste d'effacer les 7 dernières lignes (si j'ai bien compris)
EDIT : Ah oui, plus de liste.g du tout, zut xD
Bon, je retourne cogiter ^^"
EDIT 2 : Pour le moment tout ce que j'ai trouvé c'est de passer par un fichier temporaire. Pas très subtil, mais ça fonctionne.
J'en suis au tout début de mes cours, j'ai vu les > et >> mais pas les < (encore que l'usage se déduit facilement), merci de l'astuce
Je réfléchis à ta question, ça va venir
Une autre approche:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 ed fichier <<% $ -6,.d w q %
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager