数字を含む長いテキスト段落があります。おおよそ次のようになります。
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))'