Csv 基于列中的值删除行

Csv 基于列中的值删除行,csv,awk,Csv,Awk,我想删除我的CSV中的所有行,其中“Owner”列下的值是Fishbowl Digital Content 这是一个示例CSV ID,Name,Function,Media,Owner 415,Sam,Run,Footage,Production 213,Raj,Catch,Footage,Fishbowl Digital Content 214,Jack,Hold,Website,Salvage 256,Jason,Catch,Website,Fishbowl Digital Content

我想删除我的CSV中的所有行,其中“Owner”列下的值是Fishbowl Digital Content

这是一个示例CSV

ID,Name,Function,Media,Owner
415,Sam,Run,Footage,Production
213,Raj,Catch,Footage,Fishbowl Digital Content
214,Jack,Hold,Website,Salvage
256,Jason,Catch,Website,Fishbowl Digital Content
我试过了

awk -F , '$4 != "Fishbowl Digital Content" {print $0}' Test.csv >TestModified.csv
但我仍然看到“所有者”下的值为“鱼缸数字内容”的行

awk -F , '$4 != "Fishbowl Digital Content" {print $0}' Test.csv >TestModified.csv
以下是期望的结果:

ID,Name,Function,Media,Owner
415,Sam,Run,Footage,Production
214,Jack,Hold,Website,Salvage
第一种解决方案(带硬编码字段值):请尝试以下方法

awk -F, 'FNR==1{print;next} $NF!="Fishbowl Digital Content"' Input_file
第二个解决方案(不带硬编码字段值的通用解决方案):添加更多通用解决方案,它将检查哪个字段具有
Owner
值,然后跳过行。这意味着我们不是这里
Owner
列的硬编码值

awk -F, 'FNR==1{for(i=1;i<=NF;i++){if($i=="Owner"){val=i}};print;next}  $val!="Fishbowl Digital Content"' Input_file
awk-F,'FNR==1{for(i=1;i第一个解决方案(使用硬编码字段值):请尝试以下内容

awk -F, 'FNR==1{print;next} $NF!="Fishbowl Digital Content"' Input_file
第二个解决方案(没有硬编码字段值的通用解决方案):添加更多通用解决方案,它将检查哪个字段具有
所有者
值,然后跳过行。这意味着我们不是
所有者
列的硬编码值

awk -F, 'FNR==1{for(i=1;i<=NF;i++){if($i=="Owner"){val=i}};print;next}  $val!="Fishbowl Digital Content"' Input_file

awk-F,'FNR==1{for(i=1;i如果要匹配第一列或最后一列,也可以使用
grep
。对于最后一列,以下是筛选器:

grep -v ',"Fishbowl Digital Content"$' file
如果可能有尾随空格,则:

grep -vE ',"Fishbowl Digital Content"[[:space:]]*$' file

如果要匹配第一列或最后一列,也可以使用
grep
。对于最后一列,以下是筛选器:

grep -v ',"Fishbowl Digital Content"$' file
如果可能有尾随空格,则:

grep -vE ',"Fishbowl Digital Content"[[:space:]]*$' file

我知道这不是awk,但我发现Miller方法()非常简单和有用

mlr --csv filter -x '$Owner=="Fishbowl Digital Content"' inputFile.csv

我知道这不是awk,但我发现Miller方法()非常简单和有用

mlr --csv filter -x '$Owner=="Fishbowl Digital Content"' inputFile.csv

如果你计算,这是
$5
的第五个字段。@karakfa,这就是我添加通用解决方案的原因,我的解决方案在所有者所在的位置找到它的字段号(可以是任何数字),然后它将检查条件:)@Saiyam Vora,很好,你已经展示了你为解决问题所做的努力。尝试使用{}用于将示例/命令包装在代码标记中。有时也会给出,当您的问题没有答案时,尝试选择其中任何一个作为正确答案,高兴地学习如果您计算,这是
$5
'第个字段。@karakfa,这就是我添加通用解决方案的原因,我的解决方案会找到它的字段号(可以是任何数字)所有者在哪里,然后它会检查条件:)@Saiyam Vora,很好,你已经展示了你的努力,你有能力解决你的问题。尝试使用{}也用于将示例/命令包装在代码标记中。也可以在某个时候给出,当您的问题没有答案时,尝试选择其中任何一个作为正确答案,开心吗learning@Saiyam沃拉,你能告诉我这些解决方案是否对你有帮助吗?@Saiyam Vora,你能告诉我这些解决方案是否对你有帮助吗?