将Yaml数据用单引号引起来

史蒂夫·克莱因

我想YAML用单引号将所有数据包装在一个大文件中。我试过了sed,但是没有用:

sed "s/\(.*: \)\(.*\)/\1'\2'/" <data.yml >datanew.yml

这需要这样的行:

location_id: 25
street: 
text: This is text: it contains colons  

并产生如下代码:

' location_id: '25
' street: '
' text: This is text: 'it contains colons 

...但是我希望它们看起来像:

location_id: '25'
street: ''
text: 'This is text: it contains colons'

这可能在sed(或awkperl或...)中吗?根据我的研究,似乎sed第一个冒号匹配贪心可能会遇到麻烦。我正在运行Ubuntu 14.04。

附加信息

注意YAML具有可选的前导空格,令牌,冒号和行中的其他所有内容(可能包括一个或多个其他冒号),所有这些都需要用引号引起来。

您可以使用以上三行进行测试。

更多的

谢谢大家的建议。我假设其中大多数人确实在工作,但对我而言却不是。是我的终端使用建议的模式之一的快照。不幸的是,他们都以大致相同的方式对我失败。

更令人沮丧的是,当我打开文件vim并运行搜索并以相同的模式替换文件时,它可以完美运行。我试图在整个文件中使用该技术,但vim对4M线不满意。

sed莫名其妙地坏了吗?

道格

此正则表达式:

^\s*([^:]+)(:\s)(.*?)\s*$

做你想要的。工作演示

用Perl表示最容易。

鉴于:

$ echo "$tgt"
 location_id: 25
 street: 
 text: This is text: it contains colons  

在Perl中:

$ echo "$tgt" | perl -lne "print if s/^\s*([^:]+)(:\s)(.*?)\s*$/\1\2'\3'/"
location_id: '25'
street: ''
text: 'This is text: it contains colons'

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Zsh:为什么\ n用单引号引起来?

变量无法用单引号引起来

为什么optionsText用单引号引起来?昏死

用单引号引起来的数据库名称与未引起来的引起的数据库名称之间的区别

',(用引号引起来)

以编程方式用引号将Python输入引起来

将路径用引号引起来是最佳实践吗?

用单引号而不是双引号引起来的C ++中的转义序列

exec用双引号引起来

用引号引起来的CSV行

用双引号引起来

Vim用引号引起来

选择用引号引起来的文本

Python查找用单引号引起来的字符串

检查字符串是否用单引号引起来Javascript

PowerShell参数字符串始终用单引号引起来

为什么“ ls”突然用单引号引起来用空格包装项目?

htmlspecialchars是否足以防止对用单引号引起来的变量进行SQL注入?

使用CQL Java驱动程序在Cassandra中插入数据而不用单引号引起来

用引号引起来的字符串处理引号

将padas数据框列的所有行转换为逗号分隔的值,每个值都用单引号引起来

php:字符串被双引号引起来,而不是单引号引起来。怎么修?

如何在单引号引起来的字符串中转义单引号

如何更改变量的第三列,以便使用AWK或SED将其用单引号引起来

用一个单引号引起来的任意变量是否会阻止eval()执行代码?

函数参数旁边用两个单引号引起来的字母是什么意思?

如果已经使用了单引号和双引号,该如何用引号引起来?

在IntelliJ的代码编辑器中,将选定的文本用双引号引起来

用双引号将单元格值引起来:Excel VBA宏