将文件的每一行乘以减1

时间:2016-12-22 22:41:38

标签: bash awk sed

如果我有一个简单的文本文件,包含所有负值的数字,我如何使所有这些值都为正?

例如,如果test.txt具有以下值:

-4
-5
-6

如何使其值为正值?

4
5
6

5 个答案:

答案 0 :(得分:4)

tr -d '-' < file

......................

答案 1 :(得分:2)

所以其中一个MATH规则如果我们将-1乘以任何数字,它将被改为它自己的正数(如果它已经是负数),所以类似地我们可以在这里做如下。

awk '{$0=$0 * -1} 1' Input_file

希望这会对你有所帮助。

所以,让我们说你的Input_fie的值为负值和正值,如下所示。

cat file1
-4
-5
-6
7

然后我们可以使用以下代码来避免使所有内容都为负(特别是那些值已经为正值)。

awk '{$0=$0<0?$0 * -1:$0} 1'  Input_file

希望这会对你有所帮助。

答案 2 :(得分:1)

如果您的意图是仅在数字为负时转换为正数:

while read -r number; do
   [[ number -lt 0 ]] && number=$((-1 * number))
   echo $number
done < test.txt

答案 3 :(得分:0)

似乎你不想做任何数学运算,只需删除所有减号。在这种情况下,

while read line; do echo ${line//-/}; done <test.txt

在不调用外部程序的情况下完成工作。它也适用于每行有多个数字的情况。

答案 4 :(得分:0)

好的,我做了以下假设:

  • 你实际上想要与文件中的数字相反的数学
#!/bin/bash
while read a
do
    echo -1*$a | bc
done <test.txt