我想在sed中字符串末尾的最后一个值中添加一个。我在思考

cat 0809_data.csv |sed -e 's/\([0-9]\{6\}\).*\(,[^,]*$\)/\1\2/g'| export YEARS = $(echo `grep -o '[^,]*$' + 1`|bc)

例如123456,kjhsflk,lksjgrlks,2.8-> 123456,3.8

这在尴尬中会更合理/可行吗?

有帮助吗?

解决方案

这应该有效:

years=$(awk -F, 'BEGIN{ OFS=", "} {print $1, $4+1}' 0809_data.csv)

尝试使用真的很尴尬 sed 并在结果的一部分中进行算术。您必须将字符串分开并进行数学,并将所有内容放回原处。怕好做到这一点,没有任何大惊小怪。

注意 cat 不是必需的(甚至使用 sed 在与您的问题类似的命令中),除非您调用另一个脚本并需要它作为“全局”变量,否则可能不必导出该变量。另外,外壳通常会进行整数数学,因此您无需使用 bc 除非您需要浮子。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top