2017-07-15 15 views
-1

私は、私たちが持っている大きなファイルを処理するためにTPTスクリプトを作成しています。現在、ファイル内の各レコードの長さには区切り文字、|があります。ファイルの末尾に区切り文字を追加する

問題は、すべてのフィールドが各レコードで使用されているわけではありません。たとえば、レコード1には100個のフィールドがあり、レコード2には260個のフィールドがあります.TPTを機能させるには、各フィールドに区切り文字を付ける必要があります。したがって、261フィールド未満のレコードには、各レコードの末尾にパイプ。

ので、上記の私の例を取っ​​て、最後に追加161本のパイプを持っているでしょう1を記録し、2を記録し、私は各レコードにパイプの数をカウントするperlスクリプトを持っている1.

を持っているだろうが、私その情報をどのように取って、多くのパイプをフィールドに追加するのかを確認する方法がわかりません。

perl -ne 'print scalar(split(/\|/, $_)) . "\n"' 

アドバイスはありますか?

答えて

2

パイプシンボルの数を取得するには、tr演算子を使用します。

my $count = tr/|//; 

ただ、それらを得るためにx(回)演算子を使用して、パイプの数を追加するために取得するために最大数からパイプシンボルの数を引く:

perl -lne 'print $_, "|" x (260 - tr/|//)' 

私はわからないんだけど番号が正しいかどうかは、パイプが行を開始するか終了するかによって異なります。

関連する問題