簡體   English   中英

比較2個文件並使用awk / sed / bash刪除符合條件的行

[英]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 -
  1. 從newFile中刪除不需要的行
  2. 將舊文件與標准輸入中的已修改內容一起加入
  3. 僅從newfile中選擇列

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM