2014-10-16 65 views
1

我正在使用bash并想知道是否有方法执行搜索并用给定条件进行替换。我有一个行类似以下内容的CSV文件...运行搜索并使用bash shell替换为仅某些值

Ira,Frances,Lancaster,373611,06211101,239661,239661,8,8/16/01 

如果第6和第7列包含相同的值,我想用一个空字符串替换7列,因此,上述将成为

Ira,Frances,Lancaster,373611,06211101,239661,,8,8/16/01 

我使用Mac 10.9.5和bash shell。编辑文件以删除我想要的数据的最短途径是什么?

回答

1

您可以使用awk此:

awk -F, -v OFS=, '$6 == $7 {$7=""} 1' file.csv 

测试:

s='Ira,Frances,Lancaster,373611,06211101,239661,239661,8,8/16/01' 
awk -F, -v OFS=, '$6 == $7 {$7=""} 1' <<< "$s" 
Ira,Frances,Lancaster,373611,06211101,239661,,8,8/16/01 
+0

感谢。这个命令似乎可行,但它从我的文件中删除了所有的逗号。 Anywya我可以保留逗号,只是删除我不想要的值? – Dave 2014-10-16 18:59:02

+0

我刚刚更新以保留逗号并提供了测试代码。 – anubhava 2014-10-16 18:59:26

0

awk中的解决方案:

awk -F,'{if ($6 == $7) {$7 =""; print $0} }' file.csv