A voir également:
- Supprimer une ligne d'1 fichier, perl
- Supprimer une page word - Guide
- Fichier rar - Guide
- Supprimer compte instagram - Guide
- Fichier host - Guide
- Fichier iso - Guide
1 réponse
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
23 oct. 2007 à 23:18
23 oct. 2007 à 23:18
Salut,
l'option -i.orig sers à sauvegarder le fichier original
voici un exemple en ligne de commande lami20j@debian:~/trash$ cat aaa ligne1 ligne2 ligne3 - a supprimer ligne4 ligne5 lami20j@debian:~/trash$ perl -pi.orig -e 's/.*//s if 3..3' aaa lami20j@debian:~/trash$ cat aaa ligne1 ligne2 ligne4 ligne5et avec un script
lami20j@debian:~/trash$ cat ccm.pl #!/usr/bin/perl -i.orig use strict;use warnings; while(<>){ print "$_" unless 3 .. 3; } __END__ lami20j@debian:~/trash$ cat aaa ligne1 ligne2 ligne3 - a supprimer ligne4 ligne5 lami20j@debian:~/trash$ perl ccm.pl aaa lami20j@debian:~/trash$ cat aaa ligne1 ligne2 ligne4 ligne5 lami20j@debian:~/trash$ cat aaa.orig ligne1 ligne2 ligne3 - a supprimer ligne4 ligne5 lami20j@debian:~/trash$
l'option -i.orig sers à sauvegarder le fichier original
13 juil. 2013 à 20:58
1 Afficher les 6 premières lignes:
for i in a* c* ; do echo $i ; perl -E 'while (<>) {say if $. < 6}' $i ; done
# un peu plus lisible:
for i in a* c* ; do echo $i ; perl -E 'while (<>) {say "$_" if $. < 6}' $i ; done
# $. est la variable Perl qui contient le numéro de la ligne en cours.
# <> donne accès à la ligne suivante du fichier
2 Supprimer:
#Supprimer les 36 premières lignes:
for i in *; do perl -i -e 'while (<>) {print $_ if $. > 36 }' $i ; done
# Supprimer les lignes reconnues par une regex:
#Supprimer les lignes vides:
for i in *; do perl -i -e 'while (<>) {print $_ if $_=~/^\s*$/ }' $i ; done
ou:
for i in *; do perl -i -e 'while (<>) { $_=~ s/^\s*$// }' $i ; done
# idem en sauvegardant l'original avec l'extension <.bak> :
for i in *; do perl -i.bak -e 'while (<>) { $_=~ s/^\s*$// }' $i ; done
# Supprimer les commentaires (ATTENTION : et plus les $# et autres !# , plus précisément TOUT ce qui suit le 1er caractère "#" sur la ligne : peaufiner le tri si nécessaire
for i in *.txt ; do perl -i.bak -e 'while (<>) { $_=~ s/\s*#.*$// }' $i ; done