gpt4 book ai didi

linux - 批量将字符串附加到数千个 CSV 的第 1 列 (Linux)

转载 作者:太空宇宙 更新时间:2023-11-04 05:42:21 24 4
gpt4 key购买 nike

我将通过一个例子尽可能地说明这个问题:

  1. 我的特定目录中有超过 25,000 个 CSV 文件。
  2. 我需要将“-test”附加到每个 CSV 第一列中的每个条目。
  3. CSV 中没有标题,每个条目都是唯一的,每个文件名都是唯一的。

所以这个:

Column1,Column2,Column3,Column4
Unique,Entry2,Entry3,Entry4
Unique,Entry2,Entry3,Entry4
Unique,Entry2,Entry3,Entry4

会变成这样:

Column1,Column2,Column3,Column4
Unique-test,Entry2,Entry3,Entry4
Unique-test,Entry2,Entry3,Entry4
Unique-test,Entry2,Entry3,Entry4

对于我的目录中超过 25,000 个文件。

是否有 bash 脚本可以完成此任务?

*编辑 后来发现 CSV 以逗号分隔并被“s 包围。此更改将在下面解决。

最佳答案

简单地说:

find . -type f -name '*.csv' -exec sed -e '2,$s/,/-test,/' -i {} +

find 命令将生成系统可以容纳的命令行,

sed -i 将执行文件内更改,从第 2 行到文件末尾,用 -test, 替换第一个逗号 ,

对于带引号的 CSV:

find . -type f -name '*.csv' -exec sed -e '2,$s/",/-test",/' -i {} +

对于包含引号双引号或不包含任何内容的 CSV:

find . -type f -name '*.csv' -exec sed -e '2,$s/\(["\o47]\?,\)/-test\1/' -i {} +

这个可以与 CSV 一起使用,例如:

'Column1','Column2','Column3','Column4'
'Unique','Entry2','Entry3','Entry4'
'Unique','Entry2','Entry3','Entry4'

"Column1","Column2","Column3","Column4"
"Unique","Entry2","Entry3","Entry4"
"Unique","Entry2","Entry3","Entry4"

Column1,Column2,Column3,Column4
Unique,Entry2,Entry3,Entry4
Unique,Entry2,Entry3,Entry4

并且可以渲染:

'Column1','Column2','Column3','Column4'
'Unique-test','Entry2','Entry3','Entry4'
'Unique-test','Entry2','Entry3','Entry4'

"Column1","Column2","Column3","Column4"
"Unique-test","Entry2","Entry3","Entry4"
"Unique-test","Entry2","Entry3","Entry4"

Column1,Column2,Column3,Column4
Unique-test,Entry2,Entry3,Entry4
Unique-test,Entry2,Entry3,Entry4

关于linux - 批量将字符串附加到数千个 CSV 的第 1 列 (Linux),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47775022/

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