vm0 host=10.182.35.1 controller=True
vm1 host=10.182.35.2 controller=False solution=abc
vm2 host=10.182.35.3 controller=True solution=abc
vm3 host=10.182.37.4 controller=False solution=xyz
vm4 host=10.182.37.5 controller=True solution=abc
vm5 host=10.182.35.6 controller=True solution=aaa
vm6 host=10.182.37.7 controller=False solution=bbb
上記のテストはファイルにありますfile1.txt
。次のように変更したいと思います。
- 最初の3つのVMについては
controller=True
。 - 後続のすべてのVM(3番目のVMから始まる)は
controller=False
。
上記のコードスニペットには前後に何かがあるため、行番号を使用してこれを行うことはできません。
文字列の先頭を一致させ、それに応じて変更する必要があります。
したがって、出力は次のようになります
vm0 host=10.182.35.1 controller=True
vm1 host=10.182.35.2 controller=True solution=abc
vm2 host=10.182.35.3 controller=True solution=abc
vm3 host=10.182.37.4 controller=False solution=xyz
vm4 host=10.182.37.5 controller=False solution=abc
vm5 host=10.182.35.6 controller=False solution=aaa
vm6 host=10.182.37.7 controller=False solution=bbb
ファイルを変更するには?
ベストアンサー1
私は以下を使用しますperl
:
perl -pe 's/controller=\K\w+/++$n <= 3 ? "True" : "False"/e if /^vm\d+\s/' file
-i
n-placeファイル編集i
オプションが追加されました。