用perl写个linux脚本,将指定目录下的xlsx类型文件里,所有的ABC替换成bcs,所有的BDF替换成dfsdf。
时间: 2024-03-13 11:45:16 浏览: 17
可以使用 Perl 的 Spreadsheet::XLSX 模块来读取和修改 Excel 文件内容,然后使用正则表达式替换文本。以下是一个示例脚本:
```perl
#!/usr/bin/perl
use strict;
use warnings;
use Spreadsheet::XLSX;
my $dir = '/path/to/directory'; # 指定目录
my $search = {
'ABC' => 'bcs',
'BDF' => 'dfsdf',
};
opendir my $dh, $dir or die "Cannot open directory: $!";
while (my $file = readdir $dh) {
next unless $file =~ /\.xlsx$/i; # 只处理 xlsx 文件
my $path = "$dir/$file";
my $excel = Spreadsheet::XLSX->new($path) or die "Cannot open file: $!";
foreach my $sheet (@{$excel->{Worksheet}}) {
foreach my $row ($sheet->{MinRow}+1 .. $sheet->{MaxRow}) {
foreach my $col ($sheet->{MinCol} .. $sheet->{MaxCol}) {
my $cell = $sheet->{Cells}[$row][$col];
my $value = $cell->{Val} // '';
foreach my $old (keys %$search) {
my $new = $search->{$old};
$value =~ s/\Q$old\E/$new/g;
}
$cell->{Val} = $value if $value ne $cell->{Val};
}
}
}
$excel->Save();
}
closedir $dh;
```
上述代码将指定目录下所有后缀为 xlsx 的文件中的 ABC 替换成 bcs,BDF 替换成 dfsdf,并保存修改后的文件。如果需要替换其他内容,只需修改 `$search` 变量即可。