我有一个文件,包括一些字符串和变量,例如:
${cat.mouse.dog}
bird://localhost:${xfire.port}/${plfservice.url}
bird://localhost:${xfire.port}/${spkservice.synch.url}
bird://localhost:${xfire.port}/${spkservice.asynch.request.url}
${soabp.protocol}://${hpc.reward113.host}:${hpc.reward113.port}
${configtool.store.folder}/config/hpctemplates.htb
我想打印“ {}”之间的所有字符串。在某些行中,有不止一个这样的字符串,在这种情况下,它们应保留在同一行中。输出应为:
cat.mouse.dog
xfire.port plfservice.url
xfire.port spkservice.synch.url
xfire.port spkservice.asynch.request.url
soabp.protocol hpc.reward113.host hpc.reward113.port
configtool.store.folder
我尝试了以下方法:
sed -n 's/.*{//;s/}.*//p' filename
但它仅打印每行的最后一次出现。与原始文件一样,如何获取所有出现在同一行中的事件?
如果您不反对awk
,则可以尝试以下操作:
awk -v RS='{|}' -v ORS=' ' '/\n/{printf "\n"} (NR+1)%2' file
记录分隔符RS
设置为{
或}
。这会将所需的模式与其余的模式分开。
然后,该脚本使用该语句显示2条记录中的1条记录(NR+1)%2
。
为了使对齐保持预期的效果,将输出记录分隔符设置为一个空格ORS=' '
,每次遇到换行符时,此语句都会/\n/{printf "\n"}
插入一个。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句