我想删除所有行在我的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但我仍然看到"Owner“下面的值是”Fishbowl Digital Content“的行。
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发布于 2019-02-13 09:45:14
第一个解决方案(带硬编码字段值):你能试试下面的吗?
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发布于 2019-02-13 10:18:37
如果要匹配第一列或最后一列,也可以使用grep。对于最后一列,下面是过滤器:
grep -v ',"Fishbowl Digital Content"$' file如果可能有尾随空格,则:
grep -vE ',"Fishbowl Digital Content"[[:space:]]*$' file发布于 2019-02-13 15:43:09
我知道这不是awk,但我发现Miller方法(http://johnkerl.org/miller/doc/)非常简单和有用
mlr --csv filter -x '$Owner=="Fishbowl Digital Content"' inputFile.csvhttps://stackoverflow.com/questions/54661258
复制相似问题