【问题标题】:Globbing and regular expression prob with bash script使用 bash 脚本的通配符和正则表达式问题
【发布时间】:2011-05-20 22:41:12
【问题描述】:

我的正则表达式有问题:

我的脚本是用 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 文件

【问题讨论】:

  • 您确实需要努力将其翻译成英文。我是法国人,我不明白你帖子的后半部分。如果您询问给您带来麻烦的部分而不是倾倒您的整个家庭作业,这将有所帮助。
  • 对不起,我是法国人,英语不太好。不是我所有的家庭作业只是一部分。
  • 不清楚您需要什么帮助。听起来您希望我们为您编写代码,但这不是代码编写服务。如果这不是您的意图,请说明您遇到了什么问题。
  • 提到 quels problèmes spécifiques que tu as rencontrer。 En ce moment, tu nous a simplement demandé d'écrire ton program pour toi.
  • 哼算了,我用英语表达我的观点太难了。非常感谢 :) 我也会搜索 ICQ 法语 UNIX 帮助我 :P 哈哈!

标签: perl bash grep glob


【解决方案1】:

很难理解你到底想要做什么。假设你有一个 |分隔 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,因此您的转换里程(公里数?)可能会有所不同。

【讨论】:

  • "One Liner" 有点多,当代码片段上的水平滚动条显示不到原始输入的四分之一时。 :)——但出色的水晶球作品。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-17
  • 2011-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-06
相关资源
最近更新 更多