使用sed

时间:2019-04-30 05:15:20

标签: bash sed

我有一个 config.py 文件,其参数定义为

class A:
   path='/a/b/c'
   ...

class B:
   path='/d/e/f'
   ...

我正在尝试使用Bash脚本中的path来修改class Aconfig.pysed -i中的参数class A: path= '/x/y/z' ... class B: path= '/d/e/f' ...

  

sed -i << em>脚本用A类中的/ x / y / z /替换路径值> config.py

预期结果:

sed -i '/A/,/path/p' config.py

我想出了如何使用以下方法打印路径变量的值:

import pandas as pd

opened = []

for file in arrayFile:
## you must puth header on 0 and index_col as none so you wont damage the 
#indexed later
  df = pd.read_csv(file, index_col= None, header = 0)
  opened.append(df)

frame = pd.concat(opened, axis = 0, ignore_index = True)

我该如何替换值?

1 个答案:

答案 0 :(得分:-1)

此sed解决方案可解决您的问题: 1

sed -i "
  /class A/,/path/ {
    s!path=.*!path='/x/y/z'!
  }
  " config.py

或者如果您想全部都放在一行:

sed -i "/class A/,/path/{s!path=.*!path='/x/y/z'!}" config.py

进一步的解释:

  • 我在/class A/,/path/范围内搜索,然后在该范围内调用s///替换。

  • 请注意在!命令中使用s///作为备用定界符。

1 在Mac OS X上使用GNU sed测试。