[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Re : Re: sed ignorer une occurence



salut,

> J'utilise plutôt emacs et ne connais pas bien vi autrement que pour
> éditer des fichiers de config.

/!\: message à caractère informatif sans volonté prosélyte

une des raisons qui me font aimer vim est justement la simplicité avec
laquelle tu peux interagir avec les autres commandes. j'ai fais toute
une conférence là dessus (c'est en euuuhh-anglais)

	https://github.com/eiro/talk-acme-changed-my-life

je fais des demos qui illustrent ce que je te proposais de faire.

> Il me manquais deux notions :
> [^.\n] non match (la négation de la correspondance
> \1 backreference dans l'expression régulière, là par contre il va
> falloir que je lise une bonne doc sur le sujet, G pas tout compris !

ah ben sans rentrer dans les détails (attention: le -r est important)

soit une liste de tu veux transformer. disons la liste suivante:

Manipulation - Au commencement, le troisième homme - Ep 1⧸6 - Documentaire sur l'affaire Clearstream [vzKpalcKfF4].webm
Manipulation - Clearstream, la banque des banques - Ep 2⧸6 - Documentaire sur l'affaire Clearstream [RaDFbeO94Rg].webm
Manipulation - Jean-Luc Lagardère, le scénario noir - Ep 3⧸6 - l'affaire Clearstream - Y [a7glzdg_1ng].webm
Manipulation - Karachi et le trésor de guerre - Ep 5⧸6 - l'affaire Clearstream - Y [SePDLJt85bw].webm
Manipulation - La république des mallettes - Ep 6⧸6 - l'affaire Clearstream - Y [QrdpPCZfA1w].webm
Manipulation - Taïwan, naissance de la zone grise - Ep 4⧸6 - l'affaire Clearstream - Y [qYzEW7rZkn0].webm

en la liste suivante

1_Au_commencement_le_troisième_homme.webm
2_Clearstream_la_banque_des_banques.webm
3_Jean-Luc_Lagardère_le_scénario_noir.webm
5_Karachi_et_le_trésor_de_guerre.webm
6_La_république_des_mallettes.webm
4_Taïwan_naissance_de_la_zone_grise.webm

la première étape c'est de trouver la structure

	Manipulation - (TITRE) - Ep 1⧸(NUMERO) - (RESTE)

que je veux transformer en

	(NUMERO)_(TITRE).webm

* le titre arrive en premier (\1) et est composé de n'importe quoi (.*)
* le numéro arrive en second (\2) et est composé d'un numéro
	* j'aurais pu écrire [0-9]
	* je suis une flême: dans notre cas, '.' fait bien l'affaire
* tout le reste (.*), on s'en fout

j'ai donc le motif /^Manipulation - (.*) - Ep 1⧸(.) - .*/
que je veux transformer en \2_\1.webm

ensuite je repasse derrière pour virer les caractères étranges:

	s/[ ,]+/_/g

donc si je fais

sed -r '
	# afficher le nom actuel
	p
	# modifier la structure
	s!^Manipulation - (.*) - Ep (.).*!\2_\1.webm!
	# virer les caractères pourris
	s/[ ,]+/_/g
' <<%
…

J'ai une nouvelle liste avec pour chaque épisode:
* nouveau nom
* ancien nom

si je demande à xargs de prendre ces noms 2 par 2 pour les filer
à mv, je fais du renommage de masse:

{ sed -r '
	# afficher le nom actuel
	p
	# modifier la structure
	s!^Manipulation - (.*) - Ep (.).*!\2_\1.webm!
	# virer les caractères pourris
	s/[ ,]+/_/g
' | xargs -d'\n' -n2 mv <<%
…

et tout ça quand tu le fais depuis vim c'est très interactif parceque
chaque étape est du texte que tu peux modifier.

elle est pas belle la vie ?

à nouveau: si je suis allé trop vite, hésite pas à demander :)

cordialement,
marc


Reply to: