题
我想在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
除非您需要浮子。
不隶属于 StackOverflow