我想在}后面加一个逗号,除了最后一个}试过谷歌,但找不到答案。
示例如下:
从
{
"{#SERVICES} ,": "Directory",
"{#STATUS}": "RUNNING"
}
{
"{#SERVICES}": "krb5kdc",
"{#STATUS}": "RUNNING"
}
{
"{#SERVICES}": "kadmin",
"{#STATUS}": "RUNNING"
}
{
"{#SERVICES}": "named",
"{#STATUS}": "RUNNING"
}
{
"{#SERVICES}": "httpd",
"{#STATUS}": "RUNNING"
}
{
"{#SERVICES} ,": "Directory",
"{#STATUS}": "RUNNING"
},
{
"{#SERVICES}": "krb5kdc",
"{#STATUS}": "RUNNING"
},
{
"{#SERVICES}": "kadmin",
"{#STATUS}": "RUNNING"
},
{
"{#SERVICES}": "named",
"{#STATUS}": "RUNNING"
},
{
"{#SERVICES}": "httpd",
"{#STATUS}": "RUNNING"
}
如果你有任何问题请告诉我。
谢谢! !
Using awk:
awk -F '}n{' 'BEGIN { RS="" } { for(i=1;i<=NF;i++) { if (i==NF) { str=$i } else { str=$i"},n{" };printf "%s",str} print "n" }'
将字段分隔符设置为"}n{"记录分隔符为"然后在每个字段上循环打印字段,后面跟着"},n{"除了最后一个字段,我们只是打印字段。
与GNU sed
:
sed -E ':l;N;$!bl; s/}n{/},n{/g' example.txt
- 第一个命令序列
:l;N;$!bl;
在模式空间中发出整行。 - 我们只想说
s/}n{/},n{/g
,但左花括号要求
与POSIX sed
(也与bash
):
sed -E ':l;N;$!bl; s/}'$'n''{/},'\$'n''{/g' example.txt
- POSIX sed不接受表达式
n
,那么我们需要一次终止单引号块,将换行符作为$'n'
(在bash
引号的帮助下),然后重启另一个单引号块。
顺便说一句,如果perl
恰好是你的选项,你可以说:
perl -0777 -pe 's/}n{/},n{/g' example.txt
-0777
选项告诉perl首先发出所有行。