仅当基于变量和特殊字符满足条件时才查找和替换值

p1iqtdky  于 2022-09-21  发布在  Unix
关注(0)|答案(0)|浏览(138)

我有一个输入数据文件(data.csv),格式如下,我需要更新它才能得到结果

ABC,SOME CONTENT,XYZ,SOME CONTENT,,#AB DEF,,,,,,,,,,,0.1,,
ABC,SOME CONTENT,XY1,SOME CONTENT,,#AB DEF,,,,,,,,,,,0.1,,
ABC,SOME CONTENT,XY2,SOME CONTENT,,#AB DEF,,,,,,,,,,,0.1,,
ABC,SOME CONTENT,XY3,SOME CONTENT,,#AB DEF,,,,,,,,,,,0.1,,

我的条件是我有一个文件(input.txt),其中包含以下内容

XYZ
XY3

我需要为input.txt中的每个值检查data.csv中的记录,并将列中的值从#AB DEF更新为#in some country,并仅针对相应的记录将值从0.1更新为0,然后将其放回同一文件中。

结果:

ABC,SOME CONTENT,**XYZ**,SOME CONTENT,,**#in some country**,,,,,,,,,,,**0**,,
ABC,SOME CONTENT,**XY1**,SOME CONTENT,,**#AB DEF**,,,,,,,,,,,**0.1**,,
ABC,SOME CONTENT,**XY2**,SOME CONTENT,,**#AB DEF**,,,,,,,,,,,**0.1**,,
ABC,SOME CONTENT,**XY3**,SOME CONTENT,,**#in some country**,,,,,,,,,,,**0**,,

我尝试了下面的命令(我不确定如何检查sed命令中的条件),它更新了所有记录,我知道这是因为结尾的g,但不确定如何将其限制为仅限于与我的条件XYZ匹配的记录

sed -i "s|#AB DEF,,,,,,,,,,,0.1,,|#in some country,,,,,,,,,,,0,,|g" data.csv

我必须在数据中包含#spaces,我尝试将数据放入变量中并尝试替换它,但sed识别出有特殊字符,但失败了。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题