元ネタです qiita.com
別解編
ということで、私も試してみました。
フィルター + ansible
アドホックコマンドでワンライナー編
$ cat before_number.txt 001010101010101010010101 111000101010100111010011 100001010100001010101010 110101010101010010101010 101010100101010101010000 111111100000111010000000
$ ansible localhost -m copy -a "dest=after_number.txt content={{ lookup('file', 'before_number.txt') | replace('0', '_') | replace('1', '0') | replace('_', '1')}}{{'\n'}}" localhost | CHANGED => { "changed": true, "checksum": "39ba8f9887f06100e23a499bed1603bb3731ad05", "dest": "./after_number.txt", "gid": 1000, "group": "zaki", "md5sum": "78964bbf4925ebd8a66cd4abbf5c14b8", "mode": "0664", "owner": "zaki", "secontext": "unconfined_u:object_r:user_home_t:s0", "size": 150, "src": "/home/zaki/.ansible/tmp/ansible-tmp-1576710586.73-146675830149952/source", "state": "file", "uid": 1000 }
$ cat after_number.txt 110101010101010101101010 000111010101011000101100 011110101011110101010101 001010101010101101010101 010101011010101010101111 000000011111000101111111
うまくいってるかな?
regex_replace
で結果をintにして'+1 %2'とかすればいけると思ったけど、'\1'の扱いが難しく、結局replace
フィルターになりました。
あと最後の{{'\n'}}
がないと、改行が消えてしまうので苦肉の策。
詳しく調べたいけど電車の時間が…笑