末尾の数字を増加する数字に変更する方法

末尾の数字を増加する数字に変更する方法

私はArchLinux 4.1.6-1とbash 4.3を使用しています。

200以上の産業用ロボットの複数のプログラムを整理する必要があり、橋の作業を自動化しようとしています。

元のファイルと同じ順序で座標参照リストでファイルを削除し、次のように、bashなどをsed混在させることができます。headtail

via15
via25
via35
via3
via4
via5
p0584_62284
via43

via1から始まり、増加する一連の数字を含む行の末尾の数字を次のように変更する必要があります。

via1
via2
via3
via4
via5
via6
p0584_62284
via7

私はロボットプログラマーであり、単純なsed正規表現のみを管理できますが、これを使用するとawk自転車に乗った魚のようです。

ベストアンサー1

$ awk '/via/{$0="via" ++n};1' file
via1
via2
via3
via4
via5
via6
p0584_62284
via7

どのように動作しますか?

  • /via/{$0="via" ++n}

    行にが含まれている場合は、via"via"に置き換えて、その後にn。これを行うたびに、主な++原因が増えます。 awkが行全体を引用する方法。n$0

  • 1

    これはawkで行を印刷するための秘密の略語です。

    具体的に言えば、1真と評価される条件です。指定されたジョブがないため、次の行を印刷する基本ジョブが実行されますprint $0。したがって、ローンは1行の印刷を減らして表現したものです。

より選択的なアプローチ

via1行にこの3文字が表示される可能性はありますか?いいえ変更したいですか?その場合は、どの行を変更するかをより選択的に選択する必要があります。viaandで始まり、後に数字だけが続く行だけを変更するには、viaNeronLeVeluがコメントで提案したように、より限定的な正規表現を使用する必要があります^via[0-9]+$。たとえば、次のようになります。

awk '/^via[0-9]+$/{$0="via" ++n};1' file

おすすめ記事