[英]Compare 2 files and delete the lines that match criteria using awk / sed /bash
我是awk和sed的新手,並且具有以下要求。
以下是文件數據
舊文件:
SNO,ID,SHAPE,COST,CURRENTCOST
1,ABC,EFG,123,123
2,EEC,EFG,123,12
3,ARR,EFG,123,12
新文件 :
SNO,ID,SHAPE,COST,CURRENTCOST
1,ABC,EFG,123,0
2,EEC,EFG,123,12
3,ARR,EFG,123,12
預期輸出文件:
SNO,ID,SHAPE,COST,CURRENTCOST
2,EEC,EFG,123,12
3,ARR,EFG,123,12
首先,我想比較ID的值,如果它們匹配,則檢查CURRENTCOST(5th Column)是否為0,如果為0,則從New文件中刪除該行
下面是代碼流
if(CURRENTCOST == 0)
THEN
IF(FIRST FILE ID == SECOND FILE ID)
THEN DELETE THE LINE FROM SECOND FILE
ELSE
DO NOTHING
另外,如果條件為真,我可以跳過復制該行並將其他行復制到新文件中
希望這可以幫助。
感謝Tejas
使用awk
您可以執行以下操作:
awk -F, 'NR == FNR {a[$1]=$5; next} !($1 in a && $5 == 0)' oldFile newFile
SNO,ID,SHAPE,COST,CURRENTCOST
2,EEC,EFG,123,12
3,ARR,EFG,123,12
grep -v '0$' newFile | join -t , -o 2.{1..5} oldFile -
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.