用sed在字符串周围放置单引号

时间:2017-03-21 18:16:59

标签: sed

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

y

我需要将其修改为

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

我尝试了各种sed命令,比如

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

但他们没有工作..

4 个答案:

答案 0 :(得分:0)

让它发挥作用。

sed -r "s/^|$/'/g" records.config  | sed "s/\s/': '/g"

这看起来很好。希望这是更好的方式。

答案 1 :(得分:0)

使用反向引用:

sed 's/^\(.*\) \(.*\)/'\''\1'\'': '\''\2'\''/' file

或周围的双引号:

sed "s/^\(.*\) \(.*\)/'\1': '\2'/" file

答案 2 :(得分:0)

试试这个 -

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'

答案 3 :(得分:0)

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'

awk 解决方案(没有空行):

awk 'BEGIN{FS=" "; ORS="\n";}{ if(NF) print "\47"$1"\47: \47"$2"\47"}' testfile

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'