【问题标题】:Modify columns in CSV with a bash script使用 bash 脚本修改 CSV 中的列
【发布时间】:2016-10-19 19:22:23
【问题描述】:

我有一些巨大的 csv 日志(很多列和行),我需要修改如下:

  1. 删除前两行
  2. 删除最后一行
  3. 删除一些列
  4. 用 md5sum 替换某些列的值

对于第 (1) 和 (2) 点,我认为它可能适合这种方法:

tail -n +3 file.csv > temp_file.csv
mv temp_file.csv file.csv
head -n -1 file.csv > temp_file.csv
mv temp_file.csv file.csv

对于第 (3) 点,它应该是(假设我要删除第 5 列和第 25 列):

cut -d , -f 1-4,6-24,26- file.csv

对于第(4)点我不知道:|

【问题讨论】:

  • 提取列的值,对其调用 md5sum,并使用sed 将值替换为 md5。坦率地说,使用 python 会简单 1000 倍。
  • awk 可能是最好的解决方案。您可以在一个脚本中完成所有 4 个步骤。

标签: bash shell csv


【解决方案1】:

如果要删除某些列,则需要知道数字列是什么。 IE,删除5°和25°之间的列:

cut -d, -f5-25 --complement temp.csv

-d, 定义分隔符',' -f2 选择字段 2 --complement 补全所选字节、字符或字段的集合

要将某些列的值替换为其 md5sum,您可以使用 AWK 并添加具有 md5 值的列,然后删除原始列

【讨论】:

    猜你喜欢
    • 2012-07-16
    • 2013-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多