私はArchLinux 4.1.6-1とbash 4.3を使用しています。
200以上の産業用ロボットの複数のプログラムを整理する必要があり、橋の作業を自動化しようとしています。
元のファイルと同じ順序で座標参照リストでファイルを削除し、次のように、bash
などをsed
混在させることができます。head
tail
via15
via25
via35
via3
via4
via5
p0584_62284
via43
via
1から始まり、増加する一連の数字を含む行の末尾の数字を次のように変更する必要があります。
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
行の印刷を減らして表現したものです。
より選択的なアプローチ
via
1行にこの3文字が表示される可能性はありますか?いいえ変更したいですか?その場合は、どの行を変更するかをより選択的に選択する必要があります。via
andで始まり、後に数字だけが続く行だけを変更するには、via
NeronLeVeluがコメントで提案したように、より限定的な正規表現を使用する必要があります^via[0-9]+$
。たとえば、次のようになります。
awk '/^via[0-9]+$/{$0="via" ++n};1' file