bash进程数据

bash进程数据,bash,Bash,原始文件input_file.txt类似于: A: 46274 B: 43274 C: 47242 我想用一个特定的数字减去所有这些数字,比如40000,然后将结果输出到另一个文件output_file.txt,如: 6274 3274 7242 6274 3274 7242 有人能帮我吗?非常感谢。您可以使用awk来完成。例如: $ cat in.txt A: 46274 B: 43274 C: 47242 $ awk '{ print $2-74 }' in.txt 46200 4

原始文件input_file.txt类似于:

A: 46274
B: 43274
C: 47242
我想用一个特定的数字减去所有这些数字,比如40000,然后将结果输出到另一个文件output_file.txt,如:

6274
3274
7242
6274
3274
7242

有人能帮我吗?非常感谢。

您可以使用
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

$while read a b;do echo$($b-74));完成Input.txt

A: 46274 
B: 43274 
C: 47242
Unix解决方案

$> awk -F " " '{print $2-40000}' Input.txt > Output.txt
#!/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";
    }
Perl解决方案

$> awk -F " " '{print $2-40000}' Input.txt > Output.txt
#!/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

A: 46274 
B: 43274 
C: 47242