首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在文件的每一行下面添加互补比例

在文件的每一行下面添加互补比例
EN

Stack Overflow用户
提问于 2016-12-15 11:31:15
回答 1查看 31关注 0票数 1

我的档案是这样的:

代码语言:javascript
复制
0.35 0.45 0.25 0.44 0.35
0.06 0.10 0.14 0.15 0.00

我想在每一行下面加上每一项价值的补充比例,即:

代码语言:javascript
复制
0.35 0.45 0.25 0.44 0.35
0.65 0.55 0.75 0.56 0.65
0.06 0.10 0.14 0.15 0.00
0.94 0.90 0.86 0.85 1.00

到目前为止,我只在每一行下面插入了一个字符串:

代码语言:javascript
复制
typeset TMP_FILE=$( mktemp )

touch "${TMP_FILE}"
cp -p proportions_file "${TMP_FILE}"
sed -e 's/$/\nstring after each line/' "${TMP_FILE}" > proportions_file_final

其中proportions_file是原始文件,proportions_file_final是输出:

代码语言:javascript
复制
0.35 0.45 0.25 0.44 0.35
string after each line
0.06 0.10 0.14 0.15 0.00
string after each line

是否有一个函数可以用来代替“每一行后的字符串”来计算它上面的值的互补比例?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-15 11:39:10

您可以使用awk

代码语言:javascript
复制
awk 'function printdiff() {
   for (i=1; i<n; i++)
      printf "%.2f%s", (1-a[i]), (i<n-1?OFS:ORS)
}
NR > 1 { 
   printdiff()
}
{
   for (n=1; n<=NF; n++)
      a[n] = $n
}
1;
END {
   printdiff()
}' file

0.35 0.45 0.25 0.44 0.35
0.65 0.55 0.75 0.56 0.65
0.06 0.10 0.14 0.15 0.00
0.94 0.90 0.86 0.85 1.00

一行:

代码语言:javascript
复制
awk 'function printdiff(){for (i=1; i<n; i++) printf "%.2f%s", (1-a[i]), (i<n-1?OFS:ORS)} NR>1{printdiff()} {for (n=1; n<=NF; n++) a[n]=$n} 1; END{printdiff()}' file
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41163111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档