如何在每一行上用负数替换数字?

reh*_*ats 1 perl awk sed

比方说,我有大量包含数字的文件

1.5 1.6 1.7
-5
2.1 2.8 -.3
4.005
Run Code Online (Sandbox Code Playgroud)

并希望改变它们

-1.5 -1.6 -1.7
-5
-2.1 -2.8 .3
4.005
Run Code Online (Sandbox Code Playgroud)

即在每隔一行用其负值替换所有数字.我的意思是所有奇数行号.

有谁知道这是怎么做到的吗?结合相关问题的答案对我不起作用.

cho*_*oba 6

Perl救援:

perl -lane '$. % 2 and $_ = -$_ for @F; print "@F"' input > output
Run Code Online (Sandbox Code Playgroud)
  • -n 逐行读取输入
  • -a 将每一行拆分为@F数组
  • -l 添加新行以打印
  • $.包含行号,%是模运算符.$. % 2对于每个奇数行都是如此.