Unix VI - macro pour supprimer des lignes

Fermé
lost_in_leo - 22 déc. 2008 à 15:46
 Kieffen - 29 avril 2010 à 11:13
Bonjour,
je débute complètement avec VI et je me prends la tête pour une macro qui devrait faire ça :
au début j'ai un fichier qui contient + de 200 000 lignes de fichiers au format :
-rw-r--r-- 1 ngzsa100 sicint 186 Dec 10 17:04 ListeDataDefREP_UBV_20081210170416.tmp

moi je veux transformer la ligne en :
rm ListeDataDefREP_UBV_20081210170416.tmp

et le faire 200 000 fois. Mais que pour les fichiers temporaires .tmp (trop nombreux pour un rm *.tmp qui sature)

Ma macro : map g /.tmp 0 53x irm
- pour la touche 'g' => map g
- je cherche '.tmp' => /.tmp
- j'enlève les 53 1er caractères => 53x
- j'insère 'rm' => irm

Mais bien sûr ça marche pas !! Enfoiré de VI.
Donc si quelqu"un peut me donner cette foutue commande c'est super.
Ah !! : aussi comment répéter 200 000 ? Avec une macro simple qui marche si j'éssaie la cmd '5v' : ça fiche que dalle !!
Thanks !
A voir également:

2 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
22 déc. 2008 à 17:53
Salut,

Voir dans la FAQ : Suppression impossible : liste d'arguments trop longue

Sinon, essaie avec "sed" :
sed -n '/\.tmp$/ s/.* /rm /p' fichier.txt
;-))
0
:s/.*[0-9][0-9]:[0-9][0-9] /rm /g
Tadaaaaa
0