首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在特定模式上使用sed添加新行

在特定模式上使用sed添加新行
EN

Unix & Linux用户
提问于 2018-11-13 10:58:58
回答 2查看 401关注 0票数 0

我想分裂“庸俗”:"CVE-2018-17435 (Hdf5)分裂在这里“的第二个空间。我如何使用sed来完成这个任务?

我的意见:

代码语言:javascript
复制
"vulnid": "CVE-2018-17435 (hdf5)splitmehere"
"stuff":"stuffhere(somedata)"
"vulnid": "CVE-2018-17435 (hdf5)splitmehere"
"stuff":"stuffhere"
"vulnid": "CVE-2018-17435 (hdf5)splitmehere"
"stuff":"stuffhere"

预期产出:

代码语言:javascript
复制
"vulnid": "CVE-2018-17435"
"product:" (hdf5)splitmehere"
"stuff":"stuffhere(somedata)"
"vulnid": "CVE-2018-17435"
"product:" (hdf5)splitmehere"
"stuff":"stuffhere"
"vulnid": "CVE-2018-17435"
"product:" (hdf5)splitmehere"
"stuff":"stuffhere"

我尝试使用这个表达式的一个变体:

代码语言:javascript
复制
sed -r 's/(*.*) (*.*) (*.*)/\1 \2 \3/'
EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2018-11-13 11:43:04

一个可能的解决办法是:

代码语言:javascript
复制
$ sed 's/\("vulnid":\) \(.*\) \(.*\)"/\1 \2"\n"product": "\3"/' file
"vulnid": "CVE-2018-17435"
"product": "(hdf5)splitmehere"
"stuff":"stuffhere(somedata)"
"vulnid": "CVE-2018-17435"
"product": "(hdf5)splitmehere"
"stuff":"stuffhere"
"vulnid": "CVE-2018-17435"
"product": "(hdf5)splitmehere"
"stuff":"stuffhere"    
票数 1
EN

Unix & Linux用户

发布于 2018-11-13 11:51:35

你自己的建议

代码语言:javascript
复制
sed -e "s/ /\n/2"

几乎和你描述的一样。剩下的就是将额外的"product:"文本放在行符周围:

代码语言:javascript
复制
sed -e 's/ /"\n"product:" /2'

(为了在表达式中使用双引号,我将外部引号改为单引号。)

有些版本的sed可能不会将\n解释为换行符。sed规格说明指出:

可以通过将替换到行中来拆分行。应用程序应在替换的之前以一个转义它。

即。

代码语言:javascript
复制
sed -e 's/ /"\
"product:" /2'
票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/481430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档