Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash Shell脚本-CSV文件更改值n';如果列b包含serach字符串,则为第列_Bash_Shell_Csv_Awk_Sed - Fatal编程技术网

Bash Shell脚本-CSV文件更改值n';如果列b包含serach字符串,则为第列

Bash Shell脚本-CSV文件更改值n';如果列b包含serach字符串,则为第列,bash,shell,csv,awk,sed,Bash,Shell,Csv,Awk,Sed,在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

在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

假设您的输入如问题所述以逗号分隔,您可以使用以下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
要获得格式化输出,请使用

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

输入是否用逗号分隔(未在示例数据中显示)?thaks anubhava,我编辑了请求以正确的格式显示。谢谢anubhav。工作起来很有魅力。嗨,阿努巴夫,与上述要求相同,我们可以添加类似的内容。如果此处为“Name”的选择列值匹配,则更改多个列的数据。例如,如果'Name'是'RX | DMT',那么'Target'将设置为'Active','Desc'将更改为'Edited'是:
awk'BEGIN{FS=OFS=“,”}$3~/^(RX | DMT)$/{$4=“Edited”$5=“Active”}1”file.csv