次のファイルがあります(例:
first line sss case-2-hello-world other words
second line other words
third line sss case-1-love-you other words
fourth line other words
fifth line other words
sixth line sss case-6-not-work other words
私はそれを次のように変換したいと思います:
pp:12 pme:4 plan:cpu_bind=hello mem_bind=world
second line other words
pp:6 pme:2 plan:cpu_bind=love mem_bind=you
fourth line other words
fifth line other words
pp:36 pme:12 plan:cpu_bind=not mem_bind=work
まず、パターンのある線を識別しますsss
。第二に、数字を抽出します。第三に、ppとpmeを計算しますpp=number*6 and pme=number*2
。第四に、数字を含む行の単語を分割してcpu_bind
sumsに割り当てますmem_bind
。第五に、一緒に集めてラインを交換します。
たとえば、私は行を識別します
first line sss case-2-hello-world other words
のsss
数字は2です。その後は計算をする必要がありますpp=2*6 pme=2*2
。文字列をcase-2-hello-world
複数の部分に分割し、合計hello
に割り当てますcpu_bind
。最後に、私は得なければならないworld
mem_bind
pp:12 pme:4 plan:cpu_bind=hello mem_bind=world
元の行を交換してください。
注:sss
行のどこにでも表示できますが、一度だけ表示されます。sss
置き換える必要がある行を識別するために使用できる唯一のパターン。行には、数字と異なる数字を含む別の単語があります。パターンはcase-number-cpu_bind-mem_bind
4つの部分で構成されています。その順序は決まっていて吐き出すことができる-
。
ベストアンサー1
Python(2.x)では:
import sys
pat = 'sss'
for line in open(sys.argv[1]):
if not pat in line:
print line,
continue
case_nr = line.split(pat + ' case-', 1)[1].split('-')[0]
print '**something about case{}**'.format(case_nr)
呼ぶpython script_name.py input.txt > output.txt