【问题标题】:Populate a value in a particular column in csv在 csv 的特定列中填充值
【发布时间】:2019-10-26 12:29:30
【问题描述】:

我有一个文件夹,里面有 50 张 CSV 格式的 Excel 表格。我必须在该文件夹中所有工作表的 I 列中填充一个特定值,例如“XYZ”。

我是 unix 新手,已经找了几页 HereHere 。谁能提供我开始的示例脚本?

例如: 假设在这种情况下是 C 列:

A             B        C
ASFD         2535
BDFG         64486
DFGC         336846   

我想将 C 列更新为值“XYZ”。

谢谢。

【问题讨论】:

  • @oguzismail 添加了同样的内容。
  • 如果这是一个制表符分隔文件 awk 'BEGIN{FS=OFS="\t"} NR>1{$3="XYZ"} 1' file.tsv 应该可以工作。
  • @oguzismail 不是一个循环,因为有 50 个这样的 excel 表,我必须对所有人都这样做。
  • 是的,一个 for 循环就可以了。

标签: shell unix awk scripting


【解决方案1】:

我会将这些文件导出为 csv 格式 - 以分号作为字段分隔符 - 最终省略列描述(否则请参阅下面的评论)

那么下面的 SHELL 和 SED 脚本的组合或多或少已经可以解决问题了

#! /bin/sh

for i in *.csv
do
        sed -i -e "s/$/;XZY/" $i
done
  • -i 表示就地编辑文件,这里你可以将值附加到所有行
  • -e 指定替换的正则表达式

如果 csv 文件还应包含列描述,您可能希望使用类似的脚本,仅在第一行将“XYZ”重命名为“C”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 2012-11-14
    • 2019-09-29
    • 2018-03-28
    • 1970-01-01
    • 2020-07-30
    • 2020-02-17
    相关资源
    最近更新 更多