0

シェルから実行する作業 sed は次のとおりです。

sed -re 's/(::\s+ni\s+=)[^=]*$/\1 512/' test.dat

ただし、Python の subprocess.call で実行することはできません。

私は次のものを持っています:

infile = 'test.dat'
cmd= [
      "sed",
      "-re",
      "s/(::\s+ni\s+=)[^=]*$/\1 512/",
      infile
     ]
subprocess.call(cmd, stdout=open('out_test.dat','w'))

さまざまな方法を試しましたが、常にゼロ以外の終了ステータスが返されます。

4

1 に答える 1

4

問題は、Python 文字列"s/(::\s+ni\s+=)[^=]*$/\1 512/"に、バックスラッシュと 1 が必要な場所に control-A が含まれていることです。正規表現を文字列リテラルとして記述している場合は常に、可能であれば生の文字列を使用するか、そうでない場合はバックスラッシュをエスケープします。そのため、その行を次のように変更します。

r"s/(::\s+ni\s+=)[^=]*$/\1 512/",
于 2013-11-04T21:04:13.187 に答える