我正在使用 Alan 早期解决方案中的以下解决方案,该解决方案用于将文本文件与管道字符结合起来。谢谢 !
#!/usr/bin/env perl
use strict;
use warnings;
use Text::CSV;
my $csv = Text::CSV->new( { 'sep_char' => '|' } );
open my $fho, '>', 'combined.csv' or die "Error opening file: $!";
while ( my $file = <*.txt> ) {
open my $fhi, '<', $file or die "Error opening file: $!";
( my $last_field = $file ) =~ s/\.[^\.]+$//; # Strip the file extension off
while ( my $row = $csv->getline($fhi) ) {
$csv->combine( @$row, $last_field ); # Construct new row by appending the file name without the extension
print $fho $csv->string, "\n"; # Write the combined string to combined.csv
}
}
如果有人可以通过以下 3 个要求来帮助增强解决方案,那将很有帮助。
1)在我的文本数据中,一些数据在引号内,格式如下;|"XYZ NR 456"|
上面的解决方案是在我打开最终的 combine.csv 文件时将这些数据放入不同的列中,有没有办法确保在合并时所有数据都保持在管道字符内。
2)删除找到单词的整行Place_of_Destination
3)当前解决方案在每行末尾添加文件名。我也想用管道字符分割文件名
我的文件名结构是 X_INRUS6_08072013.txt,解决方案在每行末尾添加管道字符和文件名 X_INRUS6_08072013,我还想做的是在下面进一步拆分这个文件名;X | INRUS6 | 08072013
这可能吗,在此先感谢您的帮助。