用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'