原始文件:
{
A:2,
B:2,
C:2,
}
必需的:
{
A:2,
B:2,
C:2
}
有没有办法在一行中使用 awk 或 sed 来做到这一点?
使用 GNU awk:
$ cat file
{
A:2,
B:2,
C:2,
}
$ gawk -v RS='\0' -v ORS= '{print gensub(/,([^,]+)$/,"\\1","")}' file
{
A:2,
B:2,
C:2
}
如果您需要对包含上述多个块的文件执行此操作,请将脚本更改为:
gawk -v RS='\0' -v ORS= '{print gensub(/,([^,]+)$/,"\\1","")}' file
到:
gawk -v RS='\0' -v ORS= '{print gensub(/,([^,]+})/,"\\1","g")}' file
例如:
$ cat file
{
A:2,
B:2,
C:2,
}
{
D:2,
E:2,
F:2,
}
$
$ gawk -v RS='\0' -v ORS= '{print gensub(/,([^,]+})/,"\\1","g")}' file
{
A:2,
B:2,
C:2
}
{
D:2,
E:2,
F:2
}