我是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,如果它们匹配CHECK IF CURRENTCOST(第5列)是0,如果它是0,则从新文件中删除该行
以下是代码流
if(CURRENTCOST == 0)
THEN
IF(FIRST FILE ID == SECOND FILE ID)
THEN DELETE THE LINE FROM SECOND FILE
ELSE
DO NOTHING
另外,如果条件为真,我可以跳过复制该行并将其他行复制到新文件
希望这有帮助。
由于 特加斯
答案 0 :(得分:1)
使用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
答案 1 :(得分:0)
grep -v '0$' newFile | join -t , -o 2.{1..5} oldFile -