AWK,带有奇数行的算术和带有偶数行的算术,两者都打印相同的输出

时间:2014-09-30 23:03:24

标签: bash awk

美好的一天,

我想知道如何使用奇数行进行算术运算,使用偶数行进行另一个算术运算,并且两个算术都打印在相同的输出中

我的第一个奇怪的尝试是:

SUM=100 ; awk -v var1=$SUM '{sum = $1 + var1 ;print $(NR%2==1?sum:0*=0)}' file

INPUT

1
2
3
4

预期输出

101  //100 + 1
4    //2 x 2
103  //100 + 3
16   //4 x 4

提前感谢任何线索或建议。

2 个答案:

答案 0 :(得分:3)

awk -v var1=100 '{ value = (NR%2==1) ? $1+var1 : $1*$1; print value } file

Code golfing

该脚本可以简化为:

awk -v v=100 '{$0=(NR%2)?$1+v:$1^2}1' file

我认为这是共识的最小脚本(感谢Etan Reisnerkobameglenn jackman以获取帮助 - 请参阅评论)。 {...}中的部分进行计算; 1会触发print $0,但会使用更少的字符。

答案 1 :(得分:3)

不是awk,而是perl(仅供参考)

perl -snE 'say $.%2 ? $_+$s : $_**2' -- -s=100
#or
s=100 perl -nE 'say $.%2 ? $_+$ENV{s} : $_**2'

难以理解的风格;)

perl -snE 'say$.%2?$_+$s:$_**2' -- -s=100