2014-10-16 90 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