bash过程数据

时间:2012-04-26 01:03:51

标签: bash

原始文件input_file.txt就像:

A: 46274
B: 43274
C: 47242

我想将所有这些数字减去一定数量,比如40000,然后将结果输出到另一个文件output_file.txt,如:

6274
3274
7242

任何人都可以帮我吗?非常感谢你。

2 个答案:

答案 0 :(得分:5)

您可以使用awk来执行此操作。例如:

$ cat in.txt 
A: 46274
B: 43274
C: 47242
$ awk '{ print $2-74 }' in.txt 
46200
43200
47168
$ 

如果只是为了实验而你想用bash本身而不是像awk这样的工具来做,你也可以这样做:

$ while read a b; do echo $(($b - 74)); done <./in.txt 
46200
43200
47168

答案 1 :(得分:0)

<强> INPUT.TXT

A: 46274 
B: 43274 
C: 47242

Unix解决方案

$> awk -F " " '{print $2-40000}' Input.txt > Output.txt

Perl解决方案

#!/usr/bin/perl
    my @a=`cat /home/Input.txt`;
    foreach my $b (@a)
    {
            chomp($b);
            my ($c1,$c) = split (':',$b);
            chomp($c);
            $d= $c - 40000;
            print "$d\n";
    }

执行并将脚本的输出重定向到Output.txt

<强> Output.txt的

6274
3274
7242