关于CSV文件的数据处理有很多问题。但都是具体的。
我用逗号分隔CSV文件。我已经完成了所需的操作,但还有一步我仍然坚持。
请注意我希望使用Shell脚本进行此更改。 'AWK'或'SED'可能对我有帮助,但我缺乏正确的语法知识。
输入:
Index,SrNo,Name,Desc,Target,Strength
1,125,RX,Big,NULL,236
2,246,DMT,Med,NULL,548
3,425,VT,SML,NULL,461
4,512,RX,Big,NULL,415
5,951,VT,SML,NULL,243
6,426,DMT,Med,NULL,412
如果“NAME”列是“RX”或“DMT”,我想将“Target”列的值从NULL更改为“ACTIVE”。
以下是预期产量。
Index,SrNo,Name,Desc,Target,Strength
1,125,RX,Big,Active,236
2,246,DMT,Med,Active,548
3,425,VT,SML,NULL,461
4,512,RX,Big,Active,415
5,951,VT,SML,NULL,243
6,426,DMT,Med,Active,412
答案 0 :(得分:1)
假设您输入的内容是逗号分隔的问题,您可以使用此awk:
awk 'BEGIN{FS=OFS=","} $3 ~ /^(RX|DMT)$/{$5 = "ACTIVE"} 1' file.csv
Index,SrNo,Name,Desc,Target,Strength
1,125,RX,Big,Active,236
2,246,DMT,Med,Active,548
3,425,VT,SML,NULL,461
4,512,RX,Big,Active,415
5,951,VT,SML,NULL,243
6,426,DMT,Med,Active,412
要获取格式化输出,请使用column
:
awk 'BEGIN{FS=OFS=","} $3 ~ /^(RX|DMT)$/{$5 = "ACTIVE"} 1' file.csv |
column -s, -t
Index SrNo Name Desc Target Strength
1 125 RX Big Active 236
2 246 DMT Med Active 548
3 425 VT SML NULL 461
4 512 RX Big Active 415
5 951 VT SML NULL 243
6 426 DMT Med Active 412