我的文件如下:
0.35 0.45 0.25 0.44 0.35
0.06 0.10 0.14 0.15 0.00
我想在每行下面加上每个值的互补比例,即:
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
到目前为止,我只设法在每行下面插入一个字符串:
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
其中proportionions_file是原始文件,proportionions_file_final是输出:
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
是否有一个函数我可以使用而不是"字符串在每一行之后"计算高于它的值的互补比例?
答案 0 :(得分:1)
您可以使用awk
:
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
在一行中:
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