用sed在字符串周围加上单引号

用sed在字符串周围加上单引号,sed,Sed,我有一个包含如下内容的文件: proxy.config.cluster.mc_group_addr 224.0.1.37 proxy.config.log.logging_enabled 3 proxy.config.log.squid_log_enabled 1 我需要将其修改为 'proxy.config.cluster.mc_group_addr' : '224.0.1.37' 'proxy.config.log.logging_enabled' : '3' 'prox

我有一个包含如下内容的文件:

proxy.config.cluster.mc_group_addr  224.0.1.37
proxy.config.log.logging_enabled    3
proxy.config.log.squid_log_enabled  1
我需要将其修改为

'proxy.config.cluster.mc_group_addr'  : '224.0.1.37'
'proxy.config.log.logging_enabled'    : '3'
'proxy.config.log.squid_log_enabled'  : '1'
我尝试了各种sed命令,比如

sed 's/[A-Za-z]*[0-9]*[.]
但是它们没有起作用。

让它起作用了

sed -r "s/^|$/'/g" records.config  | sed "s/\s/': '/g"
这看起来不错。希望这是更好的方法。

使用反向引用:

sed 's/^\(.*\) \(.*\)/'\''\1'\'': '\''\2'\''/' file
或用双引号括起来:

sed "s/^\(.*\) \(.*\)/'\1': '\2'/" file
试试这个-

awk -v OFS=":" '{print v$1v,v$2v}' v="'" f
'proxy.config.cluster.mc_group_addr':'224.0.1.37'
'proxy.config.log.logging_enabled':'3'
'proxy.config.log.squid_log_enabled':'1'
sed解决方案:

sed -E "s/^([^ ]+) (.+)$/'\1': '\2'/" testfile
^([^]+)
-将匹配一系列字符,行首的空格除外

输出:

'proxy.config.cluster.mc_group_addr': '224.0.1.37'

'proxy.config.log.logging_enabled': '3'

'proxy.config.log.squid_log_enabled': '1'
'proxy.config.cluster.mc_group_addr': '224.0.1.37'
'proxy.config.log.logging_enabled': '3'
'proxy.config.log.squid_log_enabled': '1'

awk解决方案(无空行):

if(NF)
-检查一行是否为空以执行下一个表达式
“\47”
-指向单个引号

输出:

'proxy.config.cluster.mc_group_addr': '224.0.1.37'

'proxy.config.log.logging_enabled': '3'

'proxy.config.log.squid_log_enabled': '1'
'proxy.config.cluster.mc_group_addr': '224.0.1.37'
'proxy.config.log.logging_enabled': '3'
'proxy.config.log.squid_log_enabled': '1'