切子

2017-08-29 29 views
1

我有以下字符串:切子

<(name:John,sirname:Doe),(country:United States)> 

而且我想通过括号之间的值循环,消除以前与<>。第一轮将给name:John,sirname:Doe,第二轮country:United States。但它可以有任何数量的值。我不想使用任何未在Linux发行版中预装的库或事物。

回答

1

您可以使用gnu awkFPAT打破使用(...)模式的每个字段:

s='<(name:John,sirname:Doe),(country:United States)>' 

awk -v FPAT='\\([^)]+\\)' '{ 
for (h=1; h<=NF; h++) {gsub(/[()]/, "", $h); print $h}}' <<< "$s" 

name:John,sirname:Doe 
country:United States 
+0

如果我想改变角色呢?对此:'[{name:John,sirname:Doe},{country:United States}]' –

+0

然后将'FPAT'改为'FPAT ='\\ {[^}] + \\'' – anubhava

+1

并且' gsub(/ [()] /,“”,$ h)''gsub(/ [{}] /,“”,$ h)' –