ファイルの固定長フィールドをスペースで区切られたフィールドに変換する方法

ファイルの固定長フィールドをスペースで区切られたフィールドに変換する方法

各フィールドの長さが20文字の固定長行列型ファイルがあります。

  1. スペースで区切られたファイルにどのように変換できますか?

また、ハイフン()に置き換えたい欠落値もあります-

  1. どうすればいいですか?

出力作業をしawkます。

フィールド長が10文字のファイルのサンプル入力。

 head1     head2     head3
 a         b         c
           c          
 c                   a

出力例

head1 head2 head3
a b c
- c -
c - c

ベストアンサー1

真珠:

perl -ne '
    BEGIN {$width = 10}
    while (length) {
        ($word = substr($_,0,$width)) =~ s/^\s+|\s+$//g; # trim whitespace
        $word ||= "-";
        print $word, " "; 
        substr($_,0,$width) = "";
    }
    print "\n";
' file

おすすめ記事