我正在获取一些数据,并使用sed命令将其放入文件中
awk '/name_of_the_person/{getline; print}' file_name | cut -d '>' -f 2 | cut -f 1 -d'<' |sed 's/^/export FIRST_NAME=/' >> /tmp/source
awk '/clan_of_the_person/{getline; print}' file_name | cut -d '>' -f 2 | cut -f 1 -d'<' |sed 's/^/export LAST_NAME=/' >> /tmp/source
然后我终于找到该文件以导出变量。
我面临的问题是,有时某些人具有多个名字和姓氏,并且我的文件最终像这样
export FIRST_NAME=JEAN PAUL
export LAST_NAME=SMITH
这最终破坏了我的出口声明。有没有一种方法可以在=之后添加引号,直到行的末尾,使它变为
export FIRST_NAME="JEAN PAUL"
答案 0 :(得分:2)
使用GNU sed和向后引用:
In [193]: import pandas as pd
...: import numpy_financial as npf
...: import numpy as np
In [194]: data = np.asarray([(2017, -3660000.0),
...: (2018, -5520000.0),
...: (2019, -2460213.0),
...: (2020, 1600000.0)])
In [195]: df = pd.DataFrame(data, columns=['EffectiveDate', 'sum'])
In [196]: flows_by_year = df.set_index('EffectiveDate')
In [197]: flows_by_year.values
Out[197]:
array([[-3660000.],
[-5520000.],
[-2460213.],
[ 1600000.]])
In [198]: np.squeeze(flows_by_year.values)
Out[198]: array([-3660000., -5520000., -2460213., 1600000.])
In [199]: flows_by_year['sum']
Out[199]:
EffectiveDate
2017.0 -3660000.0
2018.0 -5520000.0
2019.0 -2460213.0
2020.0 1600000.0
Name: sum, dtype: float64
In [200]: round(npf.irr(np.squeeze(flows_by_year.values)), 4) * 100
Out[200]: -66.25
In [201]: round(npf.irr(flows_by_year['sum']), 4) * 100
Out[201]: -66.25
输出:
export FIRST_NAME="JEAN PAUL"
答案 1 :(得分:1)
您可以使用子外壳隔离匹配项。这样做还有一个好处,就是取出echo 'export FIRST_NAME=JEAN PAUL' | sed -E 's/=(.*)/="\1"/'
:
sed
使用单独的变量看起来更干净:
echo "export FIRST_NAME=\"$(awk '/name_of_the_person/{getline; print}' file_name | cut -d '>' -f 2 | cut -f 1 -d'<')\"" >> /tmp/source
echo "export LAST_NAME=\"$(awk '/clan_of_the_person/{getline; print}' file_name | cut -d '>' -f 2 | cut -f 1 -d'<')\"" >> /tmp/source