データファイルの特定の列範囲内の空白文字列をゼロの文字列に変更します。

データファイルの特定の列範囲内の空白文字列をゼロの文字列に変更します。

私たちはRedhat Linux 7.9とbsh

データファイルを見て、すべてのフィールドを列10と列20の間のスペースを0に置き換えたいと思います。

したがって、サンプルファイルがある場合:

#######################

#######################

#######################

#########        ######

#######################

#######################

#######################

#######################

私はスクリプトが次のようになりたいです:

#######################

#######################

#######################

#########000000000#####

#######################

#######################

#######################

#######################

私は以下を試してみました。

awk '{val=substr($0,10,9);gsub(val,"     ","000000000")}1' scr1

ただし、元のファイルのみが返されます。私が逃したものは何ですか?

ベストアンサー1

Perlは、示されているようにこれを簡単に処理できます。

Perlインデックスは0から始まるので、列10は9で、col10 ... 20には20-10 + 1 = 11要素があります。

$ perl -lpe 'substr($_, 9, 11) =~ tr/ /0/' file

出力:-

#######################

#######################

#######################
12345678901234567890
#########00000000000###
         12345678901
#######################

#######################

おすすめ記事