【问题标题】:Delete specific rows from csv dump从 csv 转储中删除特定行
【发布时间】:2018-10-02 10:13:54
【问题描述】:

我有 bash 脚本和一个 csv 文件,其中包含多行包含名称、地址、数字和另一个文件夹,其中包含来自 csv 文件的几个名称的文件。如何仅删除包含文件夹中存在的文件名的行?

【问题讨论】:

    标签: shell text-parsing


    【解决方案1】:

    首先制作一个将从第二个文件夹中检索名称的脚本。
    您可以使用结果过滤第一个文件。
    当名称包含特殊字符(如 sed 中使用的那样)或 csv 文件具有类似

    的字段时,这种方法可能会很困难
    field1,"an other field with a , inside quotes",field3
    

    awk 是一个很好的工具。当您没有引用字段、, 作为字段ep 和字段 1 中的名称时,您可以使用类似

    awk 'NR==FNR{a[$1];next} !($1 in a) {print}' <(cat secondfolder/allcsvfiles.csv) maincsv_file
    # or without the default {print}
    awk -F"," 'NR==FNR{a[$1];next} !($1 in a)' <(cat secondfolder/allcsvfiles.csv) maincsv_file
    

    (请参阅What is "NR==FNR" in awk? 了解说明)

    【讨论】:

      猜你喜欢
      • 2017-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-05
      • 1970-01-01
      • 2023-02-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多