数字を含むテキストを別のファイルに追加する方法(各ファイルの数字が増えます)

数字を含むテキストを別のファイルに追加する方法(各ファイルの数字が増えます)

数字を含む長いテキスト段落があります。おおよそ次のようになります。

aaaaaaaaaaaaaa100bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccc100ddddddddddddddddd

この段落を一連のファイルとしてマークする必要がありますが、各ファイルの数は前の段落より10高くなります。
たとえば、1.txtファイルでは上記のものと似ていますが、2.txtでは次のようにする必要があります。

aaaaaaaaaaaaaa110bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccc110ddddddddddddddddd

3.txt では、次のようになります。

aaaaaaaaaaaaaa120bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccc120ddddddddddddddddd

テキストは常に同じでなければなりません。新しいファイルが追加されるたびに数字が10ずつ増えるだけです。また、ファイル名(番号)も増やす必要があります。

いつも手でしたが、数量を100個から1000個に増やさなければ大当たりですね! Linuxにそのタスクを実行するコマンドがあるかどうか疑問に思います。

ベストアンサー1

以下は、各数値に10を加える簡単なPython 3スクリプトです。

#!/usr/bin/env python3

import fileinput
import re

rx = re.compile(r'(\d+)')
for line in fileinput.input():
    parts = rx.split(line.rstrip('\n'))
    if len(parts) > 1:
        for i in range(1, len(parts), 2):
            parts[i] = str(int(parts[i]) + 10)
        line = "".join(parts)
    print(line)

これは、各行が数字ではなく文字で始まると仮定します。もう少し柔軟に変えるのは難しいことではありませんが、しばらくはそうすることができます。

Bashスクリプトから呼び出すにはchmod a+x filename.py./splitnum.py

これはPerlコードの1行です:

perl -lne '@s = split(/(\d+)/); for($i=1;$i<=$#s;$i+=2) { $s[$i] += 10 }; print(join("", @s))'

おすすめ記事