【发布时间】:2018-10-02 10:13:54
【问题描述】:
我有 bash 脚本和一个 csv 文件,其中包含多行包含名称、地址、数字和另一个文件夹,其中包含来自 csv 文件的几个名称的文件。如何仅删除包含文件夹中存在的文件名的行?
【问题讨论】:
标签: shell text-parsing
我有 bash 脚本和一个 csv 文件,其中包含多行包含名称、地址、数字和另一个文件夹,其中包含来自 csv 文件的几个名称的文件。如何仅删除包含文件夹中存在的文件名的行?
【问题讨论】:
标签: shell text-parsing
首先制作一个将从第二个文件夹中检索名称的脚本。
您可以使用结果过滤第一个文件。
当名称包含特殊字符(如 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? 了解说明)
【讨论】: