我想删除CSV中“所有者”列下的值为“鱼缸数字内容”的所有行。
这是示例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
答案 0 :(得分:0)
第一种解决方案(带有硬编码字段值): 请您尝试以下操作。
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
答案 1 :(得分:0)
如果您要匹配第一列或最后一列,也可以使用grep
。对于最后一列,这里是过滤器:
grep -v ',"Fishbowl Digital Content"$' file
如果可能有尾随空格,则:
grep -vE ',"Fishbowl Digital Content"[[:space:]]*$' file
答案 2 :(得分:0)
我知道这不是awk,但我发现Miller方式(http://johnkerl.org/miller/doc/)非常简单且有用
mlr --csv filter -x '$Owner=="Fishbowl Digital Content"' inputFile.csv