次の問題:
行に 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 番目のオカレンスを実行しましたが、なんとか実行できませんでした。私はそれをグーグルで検索しようとしましたが、例はうまくいきませんでした。
誰か助けてくれませんか?
CPAN の CSV モジュールを使用したソリューションもありがたいです。