sedで文字のみを埋める方法

sedで文字のみを埋める方法

このファイルがあります。 awkではなくsedを使いたい

FSDFDSFSD
FDSFD
FHGDHFDHGHFGHGHGF
HHGDF
GFDGDFGFDG
GFDGFDGFDGDFGDGD

1行あたりの総文字数が30になるように、すべての奇数行を000で埋めたいと思います。

私はこの出力が欲しい

FSDFDSFSD0000000000
FDSFD
FHGDHFDHGHFGHGHGF00
HHGDF
GFDGDFGFDG000000000
GFDGFDGFDGDFGDGD

ベストアンサー1

一方通行:

sed -e :a -e 's/^.\{1,29\}$/&0/;ta' -e n file

すべての文字(.)と一致し、同じタイプ(1、29)の1〜29文字と一致します。一致に成功すると、 match &() パターンに '0' が追加されます。一致が失敗した場合、つまり最初の文字を除く文字数が29を超えると、一致は停止し、0で埋められた30文字列を取得します。

n最後に、次の行を読んで印刷してください。これにより、偶数行を影響なく印刷できます。

上記のスクリプトを実行します。

$ sed -e :a -e 's/^.\{1,29\}$/&0/;ta' -e n file
FSDFDSFSD000000000000000000000
FDSFD
FHGDHFDHGHFGHGHGF0000000000000
HHGDF
GFDGDFGFDG00000000000000000000
GFDGFDGFDGDFGDGD

おすすめ記事