微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sed – 尝试在比赛结束后replace第一次出现

我面临一个让我疯狂的局面。 我正在设置一个使用json文件的更新服务器。 不要问为什么或如何,这是吮吸,是我唯一的可能性。

我一直在努力和研究HOURS(很多),因为我走向了弹道,想要自己破解这个。 但是我必须意识到自己被困住了,需要帮助。

所以很抱歉这个块,但我认为这是有点重要的是…

文件一个class轮,重复以下顺序,改变值(当然)。

是正则expression式的gcc 4.8或更早的车?

用正则expression式使用scanf

.htaccess重写规则删除RK = 0 / RS =后的所有内容

如何在PowerShell中复制匹配正则expression式的文件名?

检查Shell中没有Bashisms的子string

"plugin_name_foo_bar": {"buildDate": "bla","dependencies": [{"name": "bla","optional": true,"version": "1.00"}],"developers": [{"developerId": "bla","email": "[email protected]","name": "Bla bla2nd"}],"excerpt": "some text {excerpt} !bla.png|thumbnail,border=1! ","gav": "bla","labels": ["report","scm-related"],"name": "plugin_name_foo_bar","prevIoUsTimestamp": "bla","prevIoUsversion": "1.0","releaseTimestamp": "bla","requiredCore": "1","scm": "github.com","sha1": "ynnBM2jWo25ZLDdP3ybBOnV/Pio=","title": "bla","url": "http://bla.org","version": "1.0","wiki": "https://bla.org"},"Exclusion": {"buildDate": "bla","dependencies": [],

然后直接粘贴下一个插件块。 我现在要做的是search"plugin_foo_bar": {"因为这是一个新的插件描述块的唯一标识符,我想replace之后发生的第一个sha1值,这是我一直失败的地方,我总是抓住首先,最后或整个文件中的任何事件,而不是块:( "title"是sha1值后的唯一标识符。

所以我尽量减less贪婪,但不能解决问题。

sed -i 's/("name": "plugin_name_foo_bar.*sha1": ")([a-zA-Z0-9!@#$%^&*()[]]*)(","title")/1blablabla2/1'

find该插件的sha1值,但仍然没有喜悦。 我希望有人知道 – 最好是一个更简单的方法 – 在我现在继续反复试验之前,直到我不得不呕吐和怪胎。

我正在Windows上使用SED,所以Unix的方法可能会帮助我弄清楚如何在批处理中实现这一点,但如果可能的话,请把它作为一个单一的线程。 脚本是一个真正的痛苦转换。

而我只需要SED,而不需要像AWK这样的其他工具。 这绝对没有讨论。

任何帮助表示赞赏:)

干杯1月

批处理将reg查询命令的输出正则expression为一个variables

findstr.exe不能正常工作

Bash – 如何计算指令数量

使用正则expression式来匹配字符,除非“马上”跟着另一个特定的字符

grep命令行用“or”从dos窗口(gnu grep)

正如sputnick指出,解析有点超出了sed的意思。 尽管如此,sed的图灵完成并将其变成你想做的事情,可以满足我们许多人时常感受到的{sad,masoch} istic的渴望。

这个很容易

sed ' s/"sha1": /n/g s/("name": "plugin_name_foo_bar"[^n]*n")[^"]*/1thenewsha/ s/n/"sha1": /g '

不要使用正则表达式(sed)来解析JSON,而是直接使用正确的JSON解析器或JavaScript来处理:

在脚本中使用javascript和nodejs :

文件/tmp/file.json是:

{ "plugin_name_foo_bar" : { "excerpt" : "some text {excerpt} !bla.png|thumbnail,"dependencies" : [ { "name" : "bla","version" : "1.00","optional" : true } ],"title" : "bla","prevIoUsTimestamp" : "bla","releaseTimestamp" : "bla","sha1" : "ynnBM2jWo25ZLDdP3ybBOnV/Pio=","labels" : [ "report","scm-related" ],"buildDate" : "bla","version" : "1.0","prevIoUsversion" : "1.0","name" : "plugin_name_foo_bar","scm" : "github.com","url" : "http://bla.org","gav" : "bla","developers" : [ { "email" : "[email protected]","developerId" : "bla","name" : "Bla bla2nd" } ],"wiki" : "https://bla.org","requiredCore" : "1" },"Exclusion" : { "dependencies" : [],"buildDate" : "bla" } }

脚本script.js :

var js = require('/tmp/file.json') js.plugin_name_foo_bar.sha1 = "xxx" console.log(js)

用法

nodejs script.js

对于Windows命令行,使用转义引号,替换内联和使用正则表达式

sed -i -r "s/(plugin_name_foo_bar.+?sha1": ")[^"]+"/1abcdefghijkl"/" default.json

sed -r "s/(plugin_name_foo_bar[^!]+sha1.: .)[^"]+/1abcdefghijkl/" file

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐