文字列内の位置に基づいて可変数の先行ゼロを追加する拡張正規表現を実装する
数値の体系的なスキームにさまざまな数の先行ゼロを追加するためにsed構文を取得するのに問題があります。操作している弦は 1.1.1.1,Some Text Here sed構文を活用する sed -r ":r;s/\b[0-9]{1,$((1))}\b/0&/g;tr" 私は反応を引き出すことができます 01.01.01.01,Some Text Here ただし、私が探しているのは、フィールド2と3に最大2桁、フィールド4に最大3桁をゼロで埋めて、すべてのアイテムが[0-9]。[0-9]で標準の長さになるようにすることです。 2}。[0-9] {2}。[0-9] {3} 1.01.01.001,Some Text Here 私の人生では、境界を変更して、ピリオドに続く数字のみにスナップするために必要なパラメーターを含める方法すら理解できません。私は理解している\ bの使用に何らかの関係があると思いますが、単語の境界でゼロ文字と一致しますが、ピリオドを一致に追加しようとすると次のように失敗する理由がわかりません。 sed -r ":r;s/\.\b[0-9]{1,$((1))}\b/0&/g;tr" sed -r ":r;s/\b\.[0-9]{1,$((1))}\b/0&/g;tr" Both cause the statement to hang sed -r ":r;s/\b[0-9]\.{1,$((1))}\b/0&/g;tr" sed -r ":r;s/\b[0-9]{1,$((1))}\.\b/0&/g;tr" sed -r ":r;s/\b[0-9]{1,$((1))}\b\./0&/g;tr" cause the statement to output: 1.01.01.1,Some Text Here …