2行の間にテキストを挿入する

2行の間にテキストを挿入する

次の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 *
....

おすすめ記事