bash 脚本的通配符和正则表达式问题

发布于 2024-11-08 23:08:34 字数 869 浏览 2 评论 0原文

我的正则表达式有问题:

我的脚本是用 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 文件来增强我当前的代码

I have a problem with my regex:

My script is written in perl.

#!/usr/bin/perl

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

exit;

I create an alias using the command :

alias inverseur="perl /laboratoire10/inverseur_colonnes.pl

I am hoping to accomplish the following:

Write a "bash" script that creates a file container for each movie title (.avi) in the file.

The original file is: http://www.genxvideo.com/genxinventory-current.xls
but I have since renamed it to liste_films.csv .

All quotation marks, spaces, dashes, and other strange characters must be replaced by an underscore, "_".

The group would become the directory name and the title of the movie will follow the file name suffix( .avi). In order to do this, the code must process the fields "title" and "class" in reverse. You can reverse the fields "title" and "class" with the alias "inverter" created earlier.

The script will obviously create each directory in "/laboratoire10" before creating the .avi files. There should be 253 valid directories total. Directories are being created through a "|" with the command "xargs mkdir-pv /."

I need help augmenting my current code with a command to find .avi files whose name contains the string min/maj "wood

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

少跟Wǒ拽 2024-11-15 23:08:34

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

It is very hard to understand what exactly you are trying to do. Under the assumption you have a | separated CSV and wish to have a directory tree with CATEGORY/TITLE and the file named "cans.avi" under each directory with that name, here is a one liner perl script.

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 converted the XLS file to | separated CSV using libreoffice, so your conversion mileage (kilometerage?) may vary.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文