gpt4 book ai didi

linux - 仅当行号以 + csv 文件开头时才替换行中的单词

转载 作者:IT王子 更新时间:2023-10-29 01:26:43 26 4
gpt4 key购买 nike

我使用以下 sed 命令来替换 CSV 行中的字符串

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

SERIAL_NUM=1


sed "/$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,1,WQ,435,676,90,3,44f,STATUS


sed -i "/$SERIAL_NUM/ s/STATUS/OK/g" file.csv


more file.csv

1,14556,43634,266,242,def,45,OK
2,4345,1,43,57,24,657,SD,OK
3,1,WQ,435,676,90,3,44f,OK

但 sed 还在第 2 行和第 3 行中将 STATUS 替换为 OK(因为这些行的编号为 1)

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

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

最佳答案

您可以使用 anchor ^ 来确保 $SERIAL_NUM 仅在开始时匹配,然后使用 , 来确保有一个逗号后面跟着这个数字:

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

关于linux - 仅当行号以 + csv 文件开头时才替换行中的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24885304/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com