我的正则表达式有问题:
我的脚本是用perl编写的。
#!/usr/bin/perl
# Inverse les colonnes 1 et 2
while(<>){
my @cols = split (/\|/);
print "$cols[-3]/$cols[-4]\n";
}
exit;
我使用以下命令创建别名:
alias inverseur="perl /laboratoire10/inverseur_colonnes.pl
我希望能够完成以下任务:
编写一个“bash”脚本,为文件中的每个电影标题(.avi)创建一个文件容器。
原始文件是:http://www.genxvideo.com/genxinventory-current.xls 但我已将其重命名为liste_films.csv。
所有引号,空格,短划线和其他奇怪的字符必须用下划线“_”替换。
该组将成为目录名称,电影的标题将遵循文件名后缀(.avi)。为此,代码必须反向处理字段“title”和“class”。您可以使用之前创建的别名“inverter”来反转“title”和“class”字段。
在创建.avi文件之前,脚本显然会在“/ laboratoire10”中创建每个目录。总共应该有253个有效目录。通过“|”创建目录使用命令“xargs mkdir-pv /."
我需要帮助使用命令来扩充我当前的代码,以查找名称中包含字符串min / maj“wood
的.avi文件答案 0 :(得分:2)
很难理解你究竟想做什么。假设你有一个|分隔CSV并希望有一个带有CATEGORY / TITLE的目录树和名称为“cans.avi”的文件,每个目录下都有该名称,这里是一个单行perl脚本。
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
我将XLS文件转换为|使用libreoffice分隔CSV,因此您的转换里程(千米?)可能会有所不同。