gpt4 book ai didi

linux - 如果在 Linux 中找到特定行,如何替换 .csv 文件的某些单元格数

转载 作者:行者123 更新时间:2023-12-04 19:35:26 25 4
gpt4 key购买 nike

假设我有以下 file.csv 文件内容

"US","BANANA","123","100","0.5","ok"
"US","APPLE","456","201","0.1", "no"
"US","PIE","789","109","0.8","yes"
"US","APPLE","245","201","0.4","no"
我想搜索所有具有 APPLE 和 201 的行,然后将第 5 列的值替换为 0。所以,我的输出看起来像
"US","BANANA","123","100","0.5","ok"
"US","APPLE","456","201","0", "no"
"US","PIE","789","109","0.8","yes"
"US","APPLE","245","201","0","no"
我可以做 grep 搜索
grep "APPLE" file.csv | grep 201
找出线条。但无法弄清楚如何修改原始文件中这些行的第 5 列值。

最佳答案

您可以为此使用 awk:

awk -F, '$2=="\"APPLE\"" { for (i=1;i<=NF;i++) { if ($i=="\"201\"") { gsub($5,"\""substr($5,2,length($5)-1)*1.10"\"",$5) } } }1' file.csv
将字段分隔符设置为 ,然后当第二个字段等于引号中的 APPLE 时,循环遍历每个字段并检查它是否等于引号中的 201。如果是,请使用 awk 的 gsub 函数将第 5 个字段替换为引号中的 0。打印每一行,用简写 1 更改或以其他方式

关于linux - 如果在 Linux 中找到特定行,如何替换 .csv 文件的某些单元格数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68105898/

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