linux – 仅当行号以csv文件开头时才替换行

linux – 仅当行号以csv文件开头时才替换行,第1张

概述我使用以下sed命令来替换CSV行中的字符串 (替换字符串的条件是匹配CSV文件开头的数字) SERIAL_NUM=1sed "/$SERIAL_NUM/ s//OK/g" file.csv 问题是我想只匹配从行开头开始的数字, 但是sed匹配具有此数字的其他行 例: 在这个例子中,我想将单词 – STATUS替换为OK但仅在以1开头的行中(在“,”分隔符之前) 所以我这样做 SERIAL_ 我使用以下sed命令来替换CSV行中的字符串

(替换字符串的条件是匹配CSV文件开头的数字)

SERIAL_NUM=1sed "/$SERIAL_NUM/ s//OK/g" file.csv

问题是我想只匹配从行开头开始的数字,

但是sed匹配具有此数字的其他行

例:

在这个例子中,我想将单词 – STATUS替换为OK但仅在以1开头的行中(在“,”分隔符之前)

所以我这样做

SERIAL_NUM=1 more file.csv 1,14556,43634,266,242,def,45,STATUS 2,4345,1,43,57,24,657,SD,STATUS 3,WQ,435,676,90,3,44f,STATUS sed -i "/$SERIAL_NUM/ s/STATUS/OK/g" file.csv more file.csv 1,OK 2,OK 3,OK

但sed也将第2行和第3行的状态替换为OK(因为这些行的数字为1)

请建议如何更改sed语法,以便仅匹配在“,”分隔符之前开始行的数字

备注 – 解决方案也可以使用perl line liner或awk,

解决方法 你可以使用anchor ^来确保$SERIAL_NUM仅在开始和使用时匹配,之后确保有一个逗号后跟这个数字:

sed "/^$SERIAL_NUM,/s/STATUS/OK/g" file.csv
总结

以上是内存溢出为你收集整理的linux – 仅当行号以csv文件开头时才替换行全部内容,希望文章能够帮你解决linux – 仅当行号以csv文件开头时才替换行所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1018065.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存