linux - 替换包含字符串的行,但如果是逗号则保留最后一个字符

标签 linux sed

我想对包含 TEXT 的行进行字符串替换,并在末尾保留一个 , 符号如果它在那里。

例子:

我想将 "value": 5, 替换为 "new-value": 0,

"value": 5"new-value": 0

我目前有这个:

sed -i 's/.*"cost":.*,$/    "cost": 0/' $FILE_NAME

但是,它总是会从末尾删除 ,。有什么建议吗?

最佳答案

sed -i 's/."cost":.\(,\)\?$/ "cost": 0\1/' $FILE_NAME

请注意,这仅适用于个位数的成本值。

虽然你可以使用

sed -i 's/."cost":[0-9]\+\(,\)\?$/ "cost": 0\1/' $FILE_NAME

处理任意数量的数字。

关于linux - 替换包含字符串的行,但如果是逗号则保留最后一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50261553/

相关文章:

linux - dbus_bus_request_name () : Connections are not allowed to own the service

linux - 将 CD 文件上的 sha256sum 输出到文本文件

ubuntu - 在makefile中用SED替换行尾

unix - 在Unix中用一个逗号替换多个连续的空格

regex - 使用 SED 替换缩进的文本

c - 为什么要关闭 Linux 中的管道?

linux - 我怎么知道 cron 作业已经开始或完成?

linux - apache 重写的 URL 包含完整的 Linux 路径

linux - 如何从文件中选择随机行

linux - 使用 sed 替换行 block