美好的一天,
我想知道如何使用奇数行进行算术运算,使用偶数行进行另一个算术运算,并且两个算术都打印在相同的输出中
我的第一个奇怪的尝试是:
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
提前感谢任何线索或建议。
答案 0 :(得分:3)
awk -v var1=100 '{ value = (NR%2==1) ? $1+var1 : $1*$1; print value } file
该脚本可以简化为:
awk -v v=100 '{$0=(NR%2)?$1+v:$1^2}1' file
我认为这是共识的最小脚本(感谢Etan Reisner,kobame和glenn 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