我想删除我的CSV中“所有者”列下的所有行。值是Fishbowl数字内容。
这是一个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
但我仍然看到“所有者”下的价值为“Fishbowl数字内容”的行
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
如果您匹配第一列或最后一列,也可以使用grep
。对于最后一列,这是过滤器:
grep -v ',"Fishbowl Digital Content"$' file
如果可能有尾随空格,那么:
grep -vE ',"Fishbowl Digital Content"[[:space:]]*$' file
我知道这不是awk,但我发现Miller方式(http://johnkerl.org/miller/doc/)非常简单实用
mlr --csv filter -x '$Owner=="Fishbowl Digital Content"' inputFile.csv