100) $3=$3/100;print}' test.stat 这会输-6ren">
gpt4 book ai didi

AWK:替换并写入输入文件中的列值

转载 作者:行者123 更新时间:2023-12-04 00:53:10 25 4
gpt4 key购买 nike

如果 $3 > 100,我试图替换输入文件的 $3 列值。我试过:

awk 'BEGIN {FS="\t"} {if($3 > 100) $3=$3/100;print}' test.stat
这会输出对标准输出的正确更改,但是,我需要将更改写入输入文件 (test.stat),以便其余字段/记录的值保持不变。有什么建议吗?
谢谢。另一个问题出现了。我有一个“计数器”变量,其总和需要打印在 END 块中,我试过:
awk 'BEGIN {FS="\t",counter=0} 
{if($3 > 100) $3=$3/100;print else counter++}
END{print counter}' test.stat > ...
现在,只有计数器值被写入文件,而不是 $3 值。如何将两个输出分开,以便一个修改文件,另一个使用 read 命令保存为 bash 变量。谢谢。

最佳答案

Awk 并非旨在就地编辑内容。它旨在处理数据并将其写入标准输出(或其他文件)。你可以这样做:

$ awk 'BEGIN {FS="\t"} {if($3 > 100) $3=$3/100;print}' test.stat > test.stat.new \
&& mv test.stat test.stat.old && mv test.stat.new test.stat

关于AWK:替换并写入输入文件中的列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9705940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com