2011-05-20 2 views
1

J'ai un problème avec mon regex:Globbing et expression régulière prob avec script bash

Mon script est écrit en perl.

#!/usr/bin/perl 

# Inverse les colonnes 1 et 2 
while(<>){ 
    my @cols = split (/\|/); 
    print "$cols[-3]/$cols[-4]\n"; 
} 

exit; 

je créer un alias en utilisant la commande:

alias inverseur="perl /laboratoire10/inverseur_colonnes.pl 

J'espère accomplir ce qui suit:

Ecrire un script « bash » qui crée un conteneur de fichier pour chaque titre de film (.avi) dans le fichier.

Le fichier d'origine est: http://www.genxvideo.com/genxinventory-current.xls mais je l'ai depuis renommé en liste_films.csv.

Tous les guillemets, espaces, tirets et autres caractères étranges doivent être remplacés par un trait de soulignement, "_".

Le groupe deviendrait le nom du répertoire et le titre du film suivrait le suffixe du nom de fichier (.avi). Pour ce faire, le code doit traiter les champs "title" et "class" en sens inverse. Vous pouvez inverser les champs "title" et "class" avec l'alias "inverter" créé précédemment.

Le script va évidemment créer chaque répertoire dans "/ laboratoire10" avant de créer les fichiers .avi. Il devrait y avoir 253 répertoires valides au total. Les répertoires sont créés via un "|" avec la commande "xargs mkdir-pv /."

je besoin d'aide augmenter mon code actuel avec une commande pour trouver des fichiers .avi dont le nom contient la chaîne min/maj « bois

+1

Vous avez vraiment besoin de travailler sur la traduction en anglais. Je suis français et je ne comprends pas la deuxième moitié de votre message. Il serait utile si vous avez demandé à propos de la partie qui vous donne des problèmes au lieu de jeter toute votre tâche de devoirs. – Gilles

+0

Désolé je suis français et pas très bon en anglais. Est-ce que tous mes devoirs ne sont pas une partie. – Seadow11

+1

Ce que vous avez besoin d'aide n'est pas clair. On dirait que vous voulez que nous écrivions le code pour vous, mais ce n'est pas un service d'écriture de code. Si ce n'est pas votre intention, spécifiez les problèmes que vous rencontrez. – ikegami

Répondre

2

Il est très difficile de comprendre exactement ce que vous essayez de faire. Dans l'hypothèse vous avez un |. séparés CSV et souhaitez avoir une arborescence de répertoires avec CATEGORIE/TITRE et le fichier nommé « cans.avi » dans chaque répertoire avec ce nom, voici un script perl un liner

perl -mText::CSV -e '$csv = Text::CSV->new({ sep_char=>"|",binary=>1,auto_diag => 1 }) || die; open my $fh, "<", $ARGV[0] or die; while (my $row = $csv->getline($fh)) { $file = cleaner($row->[1])."/".cleaner($row->[0]); print "mkdir $file; touch $file/cans.avi\n"; } sub cleaner($) { my($f) = @_; $f =~ s/\W/_/g; $f;}' ~/tmp/genxinventory-current.csv 

I converti le fichier XLS à | CSV séparé en utilisant libreoffice, de sorte que votre kilométrage de conversion (kilométrage?) peut varier

+0

"One Liner" est un peu beaucoup, lorsque la barre de défilement horizontale sur le fragment de code montre moins d'un quart de votre entrée d'origine. :) - mais excellent travail de boule de cristal. :) – sarnold

Questions connexes