首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据列中的值删除行

根据列中的值删除行
EN

Stack Overflow用户
提问于 2019-02-13 09:42:32
回答 3查看 72关注 0票数 1

我想删除所有行在我的CSV下的列“所有者”的值是鱼碗数字内容。

这是一个示例CSV

代码语言:javascript
复制
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

我试过了

代码语言:javascript
复制
awk -F , '$4 != "Fishbowl Digital Content" {print $0}' Test.csv >TestModified.csv

但我仍然看到"Owner“下面的值是”Fishbowl Digital Content“的行。

代码语言:javascript
复制
awk -F , '$4 != "Fishbowl Digital Content" {print $0}' Test.csv >TestModified.csv

以下是所需的结果:

代码语言:javascript
复制
ID,Name,Function,Media,Owner
415,Sam,Run,Footage,Production
214,Jack,Hold,Website,Salvage
EN

回答 3

Stack Overflow用户

发布于 2019-02-13 09:45:14

第一个解决方案(带硬编码字段值):你能试试下面的吗?

代码语言:javascript
复制
awk -F, 'FNR==1{print;next} $NF!="Fishbowl Digital Content"' Input_file

第二个解决方案(没有硬编码字段值的通用解决方案):添加了更通用的解决方案,其中它将检查哪个字段具有Owner值,然后它将跳过行。这意味着我们在这里不对Owner列的值进行硬编码。

代码语言:javascript
复制
awk -F, 'FNR==1{for(i=1;i<=NF;i++){if($i=="Owner"){val=i}};print;next}  $val!="Fishbowl Digital Content"' Input_file
票数 0
EN

Stack Overflow用户

发布于 2019-02-13 10:18:37

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

代码语言:javascript
复制
grep -v ',"Fishbowl Digital Content"$' file

如果可能有尾随空格,则:

代码语言:javascript
复制
grep -vE ',"Fishbowl Digital Content"[[:space:]]*$' file
票数 0
EN

Stack Overflow用户

发布于 2019-02-13 15:43:09

我知道这不是awk,但我发现Miller方法(http://johnkerl.org/miller/doc/)非常简单和有用

代码语言:javascript
复制
mlr --csv filter -x '$Owner=="Fishbowl Digital Content"' inputFile.csv
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54661258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档