小编Sil*_*dow的帖子

使用基于文件名的bash和Perl批量重命名文件

我正在寻找仅在当前目录中批量重命名文件并从文件名末尾删除某些字符串.

样品:

foo-bar-(ab-4529111094).txt
foo-bar-foo-bar-(ab-189534).txt
foo-bar-foo-bar-bar-(ab-24937932201).txt
Run Code Online (Sandbox Code Playgroud)

输出应如下所示:

foo-bar.txt
foo-bar-foo-bar.txt
foo-bar-foo-bar-bar.txt
Run Code Online (Sandbox Code Playgroud)

我想删除-(ab-2492201)每个文件名末尾的字符串,知道数字的长度可能会有所不同.

Perl正则表达式优于模块而不使用任何实用程序,并且对于bash oneliner命令是高度优选的.

如何在Linux上的Perl和Bash Shell中实现这一点?有兴趣知道两种解决方案.

regex linux bash shell perl

5
推荐指数
3
解决办法
5925
查看次数

仅在特定的<div>标记之间获取html内容

我编写了以下代码来刮除<div id=aaa-bbb>下一个</div>标记之间的文本内容,但它只打印出整个HTML源代码.

use LWP::Simple;

$url = 'http://domain.com/?xxxxxxx';

my $content = get($url);

$data =~ m/<div id="aaa-bbb">(.*?)<\/div>/g;

if (is_success(getprint($url))) {
    print $_;
 }

# or using the following line directly without if statement
print $data;
Run Code Online (Sandbox Code Playgroud)

我感兴趣的HTML片段如下所示:

<div id="aaa-bbb">
<p>text text text text text text text text text</p><p>text text text</p>
</div>
Run Code Online (Sandbox Code Playgroud)

该特定div标记ID仅在整个HTML文档中出现一次.

我还希望删除<p></p>标签或通过换行符整理输出,以便以后存储为文本文件或重复使用.

在阅读了您的宝贵意见之后,我尝试使用 WWW::Mechanize , WWW::Mechanize::TreeBuilder 而不是像这样

use strict;
use warnings;

use WWW::Mechanize; 
use WWW::Mechanize::TreeBuilder; 

my $mech = WWW::Mechanize->new; 
WWW::Mechanize::TreeBuilder->meta->apply($mech); 

$mech->get( 'domain.com/?xxxxxx' ); 

my …
Run Code Online (Sandbox Code Playgroud)

perl html-parsing

0
推荐指数
1
解决办法
2279
查看次数

标签 统计

perl ×2

bash ×1

html-parsing ×1

linux ×1

regex ×1

shell ×1