在等号后用双引号引起来的文本

时间:2020-06-12 00:27:19

标签: bash

我正在获取一些数据,并使用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"

2 个答案:

答案 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