次のPythonファイルがあります
#!/usr/bin/env python
import sys, argparse
from pbsuite.utils.setupLogging import *
....
私はそれを次のように変更したいと思います:
#!/usr/bin/env python
sys.path.append('/anaconda/conda-bld/pbsuite_1490823990330/_t_env/opt/pbsuite-15.8.24')
import sys, argparse
from pbsuite.utils.setupLogging import *
残念ながら、sed -i.bak '2 s|^.*$|sys.path.append(${OUTPUT})|g' a.py
変数は上書きされ、その内容に置き換えられませimport sys, argparse
ん。$OUTPUT
#!/usr/bin/env python
sys.path.append(${OUTPUT})
from pbsuite.utils.setupLogging import *
MacとLinuxでこの問題を解決するには?
ベストアンサー1
$ sed "2i\sys.path.append(\'/anaconda/conda-bld/pbsuite_1490823990330/_t_env/opt/pbsuite-15.8.24\')" file.py
#!/usr/bin/env python
sys.path.append('/anaconda/conda-bld/pbsuite_1490823990330/_t_env/opt/pbsuite-15.8.24')
import sys, argparse
from pbsuite.utils.setupLogging import *
....
奇妙なソリューション
$ a="sys.path.append('/anaconda/conda-bld/pbsuite_1490823990330/_t_env/opt/pbsuite-15.8.24')"
$ echo $a
sys.path.append('/anaconda/conda-bld/pbsuite_1490823990330/_t_env/opt/pbsuite-15.8.24')
$ awk -v ins="${a}" 'NR==2{printf("%s\n",ins)}1' a.txt
#!/usr/bin/env python
sys.path.append('/anaconda/conda-bld/pbsuite_1490823990330/_t_env/opt/pbsuite-15.8.24')
import sys, argparse
from pbsuite.utils.setupLogging import *
....