следующая проблема:
У меня есть файл с разделителями, строки которого имеют 25 или 26 полей. Для всех строк с 25 полями мне нужно добавить пустую строку после 13-го поля, чтобы в ней также было 26 полей.
Старый:
Z|432651242|987654321|XYZ|Abc|DEFEF||Abc-De-Fg|18|33221|Qwerty|18.06.3213|abc||123|Tepp|11.07.4443|2|||||4433322342344||
Новый:
Z|432651242|987654321|XYZ|Abc|DEFEF||Abc-De-Fg|18|33221|Qwerty|18.06.3213|abc|||123|Tepp|11.07.4443|2|||||4433322342344||
Мне удалось отфильтровать строки, которые нужно изменить:
#!/usr/bin/perl
use strict;
use warnings;
my (@cols,$fieldLength,);
while(<>){
@cols = split('\|', $_);
$fieldLength=@cols;
if ($fieldLength==25){
print $_;
}
}
Моя идея состояла в том, чтобы заменить разделитель "|" в 13-м случае с "||", но не смог этого сделать. Я пытался найти его в Google, но примеры не сработали для меня.
Может ли кто-нибудь помочь мне с этим, пожалуйста?
Я также был бы признателен за решение с использованием модуля CSV от CPAN.
Text::CSV
будет безопаснее регулярного выражения... - person Lucas   schedule 06.08.2013Text::CSV
— правильный инструмент для этой работы. - person Jonathan M   schedule 06.08.2013