2017-03-21 60 views
0

我有一個包含這樣的內容的文件:將單引號用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' 
'proxy.config.log.squid_log_enabled' : '1' 

我試着像

sed 's/[A-Za-z]*[0-9]*[.] 
各種sed命令

但他們沒有工作..

回答

0

讓它工作。

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

這看起來不錯。希望這是更好的方法。

0

使用反向引用:

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

或周圍的雙引號:

sed "s/^\(.*\) \(.*\)/'\1': '\2'/" file 
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' 
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'