gpt4 book ai didi

linux - 在 linux shell 脚本中向 csv 文件中的列添加/Sub/Mul/Div 常量

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:23:23 30 4
gpt4 key购买 nike

我试图通过除以一个常量来修改 csv 文件中特定列的内容。

例如:如果内容是

1000,abc,0,1
2000,cde,2,3 and so on..

我想改成

1,abc,0,1
2,cde,2,3

我在这个博客中浏览了所有以前的解决方案,我尝试了这个

awk -F\; '{$1=($1/1000)}1' file.csv > tmp.csv && mv tmp.csv file.csv

上述命令打开 file.csv ,执行 $1/1000 并将其保存到临时文件,然后覆盖到原始文件。

我看到的问题是,在最后的file.csv中,显示的内容如下

1
2
3
4 and so on ..

它不会复制除第 1 列之外的所有其他列。

我该如何解决这个问题?

最佳答案

因为您的文件是逗号分隔的,所以您需要指定一个逗号作为输入和输出的字段分隔符:

$ awk -F, '{$1=($1/1000)}1' OFS=, file.csv
1,abc,0,1
2,cde,2,3

-F, 告诉 awk 在输入时使用逗号作为字段分隔符。

OFS=, 告诉 awk 在输出时使用逗号作为字段分隔符。

就地更改文件

使用现代 GNU awk:

awk -i inplace -F, '{$1=($1/1000)}1' OFS=, file.csv

使用 BSD/OSX 或其他非 GNU awk:

awk -F, '{$1=($1/1000)}1' OFS=, file.csv >tmp && mv tmp file.csv

替代样式

一些造型师更喜欢在代码之前设置OFS:

awk -F, -v OFS=, '{$1=($1/1000)}1' file.csv

关于linux - 在 linux shell 脚本中向 csv 文件中的列添加/Sub/Mul/Div 常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39539467/

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