長さが等しい場合、awk は列値を増分値に置き換えます。

長さが等しい場合、awk は列値を増分値に置き換えます。

非標準データがありますが、これを正規化したいと思います。

文書:

d101 11001
e101 9665
f101 9663
d102 11002
e102 11003
f102 11004
g102 11005

希望の出力:

d101 11001
e101 12001
f101 12002
d102 11002
e102 11003
f102 11004
g102 11005

したがって、列2の長さが4の場合は、それを指定された系列の増分番号で置き換える必要があるというロジックが必要です。この場合、1200は系列で、&1、2、3..は増分です。

ベストアンサー1

$ awk -v n=12000 'length($2)==4 {$2=++n} {print}' file
d101 11001
e101 12001
f101 12002
d102 11002
e102 11003
f102 11004
g102 11005

最初にインクリメントしてから、n新しい値を使用するように割り当てます。最初から印刷するには、12000次を使用し、$2=n++最初に割り当ててから増分します。

おすすめ記事