从csv转储中删除特定行

时间:2018-04-22 05:44:14

标签: shell text-parsing

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

1 个答案:

答案 0 :(得分:0)

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

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

awk是一个不错的工具。如果您没有引用字段,,作为fieldsep并且字段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?获取解释)