按递增顺序替换指定的编号

时间:2015-11-30 08:39:06

标签: bash perl awk

我的文件包含以下格式。在以下文件中,我想将t=0.00000替换为t=0.00000+50,如50.00000,而不更改文件格式。我的文件看起来像:

MODULE  for the   Modulate t=   0.00000

MODULE  for the    Modulate t=   4.00000

MODULE   overshoot  Modulate t=   8.00000

MODULE   fail for  Modulate t=  12.00000

MODULE   successful for the Modulate t=  16.00000

我做了类似这样的事情,但无法增加并且手动花费了很多时间。

sed -i 's/MODULE  for the   Modulate t=   0.00000/MODULE  for the   Modulate t=50 /g'  file.txt

预期产出:

MODULE  for the  Modulate t=   50.00000

MODULE  for the  Modulate t=  54.00000

MODULE  overshoot   Modulate t=  58.00000

MODULE   fail for  Modulate t=  62.00000

MODULE   successful for the Modulate t=  66.00000

3 个答案:

答案 0 :(得分:4)

在Perl单行命令中

final Switch colorsChange= (Switch) findViewById(R.id.switch_colors);
    colorsChange.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (isChecked) {
                // Color blind friendly colors here

            } else {
                // Normal RGB colors here
                getResources().getColor(R.color.defaultColors);
            }
        }
    });

输出

perl -pe 's/Modulate\s+t=\K\s*([0-9.]+)/sprintf '%10.5f',$1+50/e' my_file

答案 1 :(得分:2)

使用awk

awk 'NF{$NF=sprintf("%.5f",$NF+50)}1' file

MODULE  for the  Modulate t=   50.00000

MODULE  for the  Modulate t=  54.00000

MODULE  overshoot   Modulate t=  58.00000

MODULE   fail for  Modulate t=  62.00000

MODULE   successful for the Modulate t=  66.00000

答案 2 :(得分:0)

<强>增量

awk '/t=[[:blank:]]*0.00000/{gsub(/t=[[:blank:]]*0.00000/, "t= " (Inc+=50) ".00000")}1' YourFile > NewFile

如果第一次出现t = 0需要仍为0,则可以添加BEGIN{Inc=-50}作为第一个动作

<强>贴花

sed '/\(t=[[:blank:]]*\)0\([.]00000\)/ s//\150\2/' YourFile > NewFile