固定長ファイルがsedまたはawkに置き換えられました

固定長ファイルがsedまたはawkに置き換えられました

487バイトの固定長ファイルがあり、各レコード位置407-415(9バイト)は数値フィールドです。時には、フィールドに英数字の組み合わせが表示されることがあります(123ABC123、ABC000123...)。レコードにこのような内容が含まれている場合は、そのバイトで00000000を置き換えたいと思います。

ベストアンサー1

そしてawkソリューション

awk 'BEGIN{FS=OFS=""}{f=0;for(i=407;i<=415;i++){if($i!~/0-9/){f=1}};if(f){for(i=407;i<=415;i++){$i=0}};print }' fixed

フィールド区切り文字を空にするように定義し、各文字はフィールドです。次に、各レコードのフラグをf0(数字と仮定)に設定します。文字 407-415 を /0-9/ と比較します。不一致がある場合、fを1に設定します。次にf = 1の場合、9文字をすべて0に置き換えてその行を印刷します。

おすすめ記事